Skip to main content

Posts

Tips on Writing Readable Code

Code readability may be defined as the convenience with which the source code is understood and modified. Code readability is of vital importance when maintaining larger legacy codebase and working in teams. If the code is easy to read, it would be easy to debug, refactor, enhance and maintain, thereby reducing the lifecycle cost of software product. As readability directly impacts software quality, researchers have proposed adding a separate phase during development focused on improving code readability. Although, code readability is subjective to human judgement, static analysis tools can provide a fair estimate on various factors impacting readability such as indenting, naming and commenting. As a programmer, follow the tips provided below to create self-documenting software program, which can be understood conveniently by other programmers during it's lifetime.
Recent posts

Top Skills to Master in the Age of AI

AI is finding it's way in  a wide variety of applications pertaining to  almost every industry. This AI driven rapidly evolving landscape has created a demand for a unique blend of technical, creative, and interpersonal skills highly sought-after by employers. Listed below are some specialized AI-related skills that are becoming increasingly valuable in the modern times. 1. AI Models Development Understanding how AI and ML work including the underlying algorithms, and learning to develop ML powered apps using tools like TensorFlow or PyTorch is a highly desirable skill to master in the age of AI. Furthermore, the skills in fine-tuning and adapting large pre-trained models (like GPT, BERT, or Vision Transformers) to specific use cases are also useful, allowing you to create specialized applications without starting from scratch. Leveraging pre-trained models and adapting them to new tasks with limited data is particularly useful in NLP and computer vision. 2. AI Models Deployment Pr

Impact of AI on Education

Computer scientists have been exploring the possible applications of AI technology for decades, and a lot of tools and applications we use today include some form of AI. The talk about ethical considerations in AI technology and it's impact on society is as old as the technology itself . Similar to other revolutionary and break-through technologies in the past such as the internet, computers, cars, and smartphones, AI technology has also it's pros and cons. The objective is to make the best use of the technology, while also making regulations and improving it further to minimize the side effects. The advent of ChatGPT in November, 2022 by OpenAI and Microsoft took us one step closer to Artificial General Intelligence (AGI)  and reignited discussions about how it can impact various segments of our society including education . Some people argue that as people rely more on AI based technologies, it will inhibit their learning. Furthermore, the role of teachers may be diminished a

How to be an Efficient and Highly Productive Software Developer

Becoming a good software developer involves more than just writing code. It requires adopting habits that foster continuous learning, effective problem-solving, collaborating with peers and professional growth. Efficient programmers cultivate habits that not only enhance their productivity but also contribute to the quality and maintainability of their code. Here are some good habits that efficient software developers typically practice : 1. WRITE CLEAN AND READABLE CODE Write Efficient Code:   The efficiency of a programmer is not evaluated by the number of lines of code written but by the quality of code. Good software developers write fewer lines of code and spend time commenting, documenting, testing and refactoring to make it efficient and ensure that it works as per the requirements. Use Consistent Naming Convention: Use meaningful and descriptive names for variables, functions, and classes. Consistent naming helps other developers (and your future self) understand the code bett

Automated Software Fault Localization Tools and Techniques

Software Debugging is the process of identifying and fixing errors / bugs in a faulty program discovered during testing or reported from production. Bugs may be logical errors, runtime errors or syntax errors which can lead to software crashes or incorrect outputs.  The process of debugging involves the following steps: 1. reproduce the failure, 2. locate the bug, 3. identify the root cause, 4. fix the bug, 5. test the fix, and 6. document the process. Software Debugging is extremely time consuming and very expensive, yet essential to i mprove the overall stability, reliability and performance of a software product. The  effectiveness of software debugging depends on developers’ understanding of the program being debugged and how suspicious code containing the bug is identified. During software debugging, fault localization is the process of identifying exact locations of program faults, which is very expensive and time consuming process. Since fault localization is highly tedious, aut

Top AI Code Generation Tools

Software programming is a highly cognitive task requiring specific set of skills and abilities. Developing Artificial Intelligence which can generate source code can greatly help human programmers by augmenting their efforts and time. The current state of the art deep learning approaches have made it possible to train Large Language Models capable of suggesting source code in a human readable format, given basic specification requirements as input. 

How to Start a Blog for Free in 8 Simple Steps

Blogging is a great channel to express your ideas to the world. Although, you may have wonderful ideas to share, you may be restricted by your knowledge of the technologies involved in starting a blog. This guide will show you how to start a blog that is aesthetically pleasing and fully functional, all in an easy step-by-step tutorial. 

10 Best Blogging Websites and Platforms

If you are planning to start your blog, there are plenty of blogging websites and platforms to choose from. Each platform has its pros and cons, and choosing the right platform is crucial for your success. If you have little computer skills, you may prefer a platform which is convenient to setup and use. However, it is beneficial to choose a blogging platform which offers plenty of features and options, so that you have the room to expand and monetize later. In this post, I will explain the capabilities of 10 best blogging websites and platforms and their key features. 

How to Monetize a Blog and Make Money Blogging

Once your blog is up and ready with a steady stream of interested readers, its a good time to make some money from your blog. Before you think about making money from your blog, you must have at least 40 - 50, original, top quality and engaging posts on your blog. There are plenty of ways and online business models to monetize a blog. You should implement a monetization strategy that aligns with your specific blog niche and your goals. This post presents some common ways to make a decent amount of money from your blog. 

Best Practices for Working with Software Version Control Systems

  Software Version Control is an important part of every modern software development team. Provided below are some of the best practices for working with software version control systems.

Scriptless Test Automation Frameworks and Tools

What is Scriptless Test Automation?  Scriptless Test Automation is writing automated test cases for a software application without involving any script  or code.  Automated testing is highly essential to ensure rapid software releases, particularly in Agile driven teams. Regression testing of a software application which is frequently updated, should definitely be automated, to reduce the cost involved in manual testing. Automated test cases are typically written in parallel to the software, using some testing framework such as JUnit, Selenium, Espresso, CppUnit, UI Automator, Appium or Cucumber. Typically, writing a script for particular test case includes providing test inputs, execution steps and comparing results.

Code Optimization Tips for Increasing Execution Speed of a Software Program

CPU (Central Processing Unit) is the primary component of a computer system, which executes the  basic arithmetic, logical, controlling  and input/output (I/O) operations specified by the instructions in a computer program . CPU utilization is an estimation of the CPU used by a particular task, which  is often expressed in clock ticks or as a percentage.  In embedded computing world, one of the critical design decisions include  customizing the software for better CPU utilization. 

Loop Optimization Tips to Improve Execution Time of a Software Program

Much of the execution time of a software program is used by loops. Substantial improvement can be achieved in running time of the software by reducing the number of loops, minimizing the number of iterations of a loop or reducing the number of code statements inside the loop. Following are few of the loop optimization techniques which are effective for increasing the execution speed of a software program: 

5 Popular Worms of Cyber History

1. Morris Worm  In 1988, Robert Tappan Morris, Cornell University student, launched 99 lines of code in his quest to find out how big is the internet. While his intentions were not malicious, there were bugs in his code that caused infected hosts to encounter plenty of stability problems that made these systems unusable. The result was increased load averages on over 6,000 UNIX machines across the country which caused between $10,000,000 and $100,000,000 of damage.

Etymology of Basic Software Terms

This blog post lists the interesting etymological facts behind some basic terms in software technology.  SOFTWARE  The word software was initially coined by Paul Niquette in 1953 to differentiate it from hardware (used for computer itself). The term "software" in a computing context was first published by American statistician John W. Tukey , who published the term in "The Teaching of Concrete Mathematics" on January 9, 1958. Tukey wrote:

History of Web Design and Development

World Wide Web - The First Browser - 1990 December  Tim Berners, a British physicist and internet pioneer, created the world's first web browser called World Wide Web at CERN (a Swiss research center). The browser was a simple WYSIWYG editor for web pages.

Reducing Regression Testing Time

What is Regression Testing?  Regression testing is a type of software testing which is carried out to confirm if the modifications in a software program have broken any existing functionality. Despite its importance, regression testing is costly, specifically for large codebase / test suite, as it consumes enormous amount of compute resources and time. To understand the scale of this problem, according to the statistics published in 2017 by Continuous Integration (CI) and testing group at Google, 150 Million tests are executed per day for 2 Billion Lines of Code (LOC). At this scale, chances of regression errors are increased, demanding implementation of efficient regression testing strategies. Imagine the waste of resources in this unlucky scenario: developer modifies only one line of code, pushes code to Version Control System (VCS), regression testing is triggered lasting around 9 - 10 hours, regression error is found in the last test case execution and the bug report is sent to the

How Real-Time Linux is Better than Commercial Real-Time Operating Systems

What is a Real-Time Operating System (RTOS)?  A Real-Time Operating System (RTOS) is an Operating System which can guarantee execution of different tasks on one or more processors within a specified time. Real-Time Operating Systems execute Real-Time tasks, typically used in industrial control, defense, aerospace, automobile and medical applications. Few of the popular Real-Time Operating Systems include VxWorks, Integrity, PikeOS, FreeRTOS, LynxOS, Micrium, Real-Time Linux and Keil RTX. The design of RTOS differs from GPOS in the implementation of scheduling policies and handling of interrupts. The task schedulers implemented in RTOS provide more control to the developers over assigning priorities. 

Largest Data Centers in the World

Inside Google Data Center In the past few years, data center space has skyrocketed at an incredible speed. Many companies are now using cloud computing, which requires a large amount of data storage, resulting in the creation of some big data centers. This post lists the ten largest data centers based on total square footage of floor space.