Tuesday, September 13, 2022

How to Access the Metaverse

In February this year, Bernard Marr predicted that "in 2022, we'll see new, lighter, more portable VR devices, so instead of having clunky headsets that require WiFi connections, we will have devices that are more like glasses that connect to our phones and give us superior VR experiences on the go."

This could mean more users for the Metaverse as Virtual Reality (VR) technology is simplified. Though quality VR headsets are expensive right now, over time they may become cheaper as the demand and supply increases especially because of the metaverse.

If you're on a budget, the best way to join the metaverse is through VRChat using the Oculus Quest 2 VR headset which sells at about R10K ($587). Create an account in VRChat, connect your headset, and then select from a variety of worlds which world you desire to explore and participate in.


Participating in the metaverse mostly relies on the type of headset you will be using, but you don't always need a VR headset but many worlds require it. If you have money to splurge, you can join the metaverse through Decentraland, but you will need a dedicated graphics card to run it properly on your PC. Join as a guest to get an idea of how it is like to play in the metaverse.

The following link will take you to an article that explains the initial metaverse experience through Decentraland very well: https://www.cashify.in/how-to-enter-and-access-metaverse 

The metaverse experience is much like a gaming experience but closely connected to real life as you use real money and meet real people. It is described as the second layer of the Internet and the future of the Internet by experts. It is also an ingenious idea for organizations to get new customers and develop products and services specifically for the metaverse.

There are currently many platforms to access the metaverse but each are in early development stages. It's not really at the level it is envisioned right now, but with much development it promises new work, social, and gaming possibilities (Cashify).

References:

1. Marr, B. (2022) The Top Ten Tech Trends in 2022 Everyone Must be Ready for Now. [online] Available at: https://www.forbes.com/sites/bernardmarr/2022/02/21/the-top-10-tech-trends-in-2022-everyone-must-be-ready-for-now/?sh=e7705e827df5 [Accessed on 13 September 2022]

2. Cashify (2022) How to Enter and Access the Metaverse. [online]. Available at: https://www.cashify.in/how-to-enter-and-access-metaverse [Accessed on 13 September 2022]



Monday, August 26, 2019

Telekinetic VR

In light of a book I've been working on, which you can read about here, I thought I might do a bit of digging on brain-computer interfaces (BCI's) for Virtual Reality headsets. Yeah, that's right. Movement in VR with your mind, like in the movies.

I've always thought this technology was still far ahead to come but in fact, as Karev reports (2018), VR technologies are evolving much faster than consumer versions of headsets can be released. So, never underestimate the rate of the development of technology.

These are the times where EEG technology, which is used to diagnose epilepsy, sleep disorders or other abnormalities, and show whether you are focused, stressed or relaxed, is being used to navigate a VR environment telekinesis-style, by measuring electric activity in the brain caused by the flow of electric currents through neurons by sensors that make contact with the skin on your scalp, (Karev, 2018).

These electric signals can be used to decode something specific, like the intent to scroll or press a button. Unfortunately (or fortunately in the scope of privacy) EEG's cannot read minds. Much like how Stephan Hawkin's interface interpreted facial movements into letters through sensors. Or, like how bionic arms sense electric pulses from muscle movements to function.

Not only is this technology (BCI) a breakthrough for the gaming industry, but it also helps in assisting the disabled because BCI's are often used as assisted living devices for individuals with motor or sensory impairments (nature.com).

In my book, the protagonists are dating long-distance through VR headsets. Where the environment can be navigated and manipulated by the mind through non-invasive signals (i.e. no brain implants required), like with EEG's. It's rather uncanny how this concept is not too far from the future. It's at our doorsteps. We just need to wait for Tinder to catch up on it ;)

References:

Karev, K. (2018) Behold The Next Generation VR Technology: Part 6 - Brain Interface [online] Available at: https://medium.com/inborn-experience/behold-the-next-generation-vr-technology-part-6-brain-interface-89b1d31a0a96 [Accessed on 26 August 2019]

Nature.com (n.d.) Brain-machine interface [online] Available from: https://www.nature.com/subjects/brain-machine-interface [Accessed 26 August 2019]


Tuesday, April 23, 2019

SAP Project System Module in My Own Words

Projects are complex and unique in nature therefore when it comes to managing them electronically, an equally detailed system is required and the SAP Project Systems module provides that support.

I am currently doing training to prepare to work on a project for a client that is using SAP. I find SAP Project Systems to be interesting because it is based on Project Management which I have studied in college. It allows organizations to track project activities from start to finish and manage all the details that go into them.

This module is impressive as it integrates with other SAP modules seamlessly to produce an ecosystem of all the elements required to drive the business engine faster and more efficiently. Hence we can observe how SAP adds business value to large enterprises.

In SAP Project Systems, you can create a project in more than one way but Project Builder is the most common way. You can then add levels of Work Breakdown Structure (WBS) elements to model and structure the project according to its activities in an hierarchical fashion. You can also add networks that show the flow of tasks within the project. Milestones can also be added to signify events that are important to the project flow.

For comparison purposes, you can also create project versions to show the state of the project at a certain point in time.

You can also create projects in simulation mode to test scenarios before creating a real project when decisions have been made.

The most important aspect of projects is the budget which SAP handles efficiently. You can do cost planning to estimate costs then create and distribute the budget in all WBS elements. The budget can be adjusted throughout the project's life-cycle as you can add to it (supplement), take from it (return), release funds, transfer available funds to another project, or carry the remaining budget forward into the following fiscal year.

Another important aspect is the dates and scheduling of the project. You can define different types of dates in each level of the project and align and calculate them for activities and networks through scheduling.

Of course, there are so many other details in Project Systems that I would like to master. But I hope my overview gives you a basic understanding of what it entails.






Friday, April 12, 2019

Tech Exco Meet & Greet With Grads

We began the event with presentations from leadership on the Technology Operating Model and how well the different departments in Tech are doing. These presentations were motivating as we gained perspective on how we are a part of a greater whole - a giant technology company and the future of it looks successful. The industry we are in is exciting and we came at the right time where we have rotated to the new and now leadership is spearheading the movement into the future.

After the presentations we had drinks and snacks and took the opportunity to mingle with leadership and ask our questions. They shared their experiences with us in the company and in their projects and gave good advice.


I came home motivated and open to whatever opportunities I may encounter in the company for the growth of my career and also my personal experience with people and places.

Tuesday, March 12, 2019

How Deep Learning Mimics the Brain

Artificial Intelligence (AI) is slowly developing at the moment because, as John Light infers (2017), it is both a technology AND a philosophy. I mean, will we really ever replicate human intelligence and sentience in machines?

Although we have gone from hard coding rules into a machine to the machine sensing, comprehending, acting and learning on its own, we have only simulated the logical operations of the mind so we still have our work cut out for us when it comes to machine consciousness because obviously, consciousness is not in our power to create.

Machine Learning (ML) is a branch of AI that enables machines to make predictions from any given inputs, acting without being explicitly programmed and Deep Learning (DL) is a method of ML which uses artificial neural networks for classification tasks and is inspired by biological neural networks which Nagify Richard (2018) explains.

Just as the neuron receives signals from the dendrites and sends them down the axon as inputs to other neurons, repeating the process, Nagify Richard (2018) relates how artificial neurons can do the same to classify data which results in Computer Vision which allows a computer to see and visualize like a human would (Playment, 2018) and also speech recognition etc.

Machines will only ever mimic math logic because it is quantifiable according to the laws of this physical dimension whereas consciousness and emotions are reserved for sentient life forms and cannot be measured or weighed in this physical dimension.

References:
  1. Morikawa, R (2018). What's Slowing Down the Pace of AI Innovation?. [online] Gengo. Available at: https://gengo.ai/articles/whats-slowing-down-the-pace-of-ai-innovation/ [Accessed 12 March 2019].
  2. Light, J (2017). Why is AI Development so Slow at the Moment. [online] Quora. Available at: https://www.quora.com/Why-is-AI-development-so-slow-at-the-moment [Accessed 12 March 2019].
  3. Richard, N (2018). The Difference Between Artificial and Biological Neural Networks. [online] Towards Data Science. Available at: https://towardsdatascience.com/the-differences-between-artificial-and-biological-neural-networks-a8b46db828b7 [Accessed 12 March 2019].
  4. Playment (2018). What is Deep Learning and Why you Need it. [online] Becoming Human. Available at: https://becominghuman.ai/what-is-deep-learning-and-why-you-need-it-9e2fc0f0e61b [Accessed 12 March 2019].



Friday, March 8, 2019

How Ingenius is Design Thinking?

I was recently introduced to Design Thinking at work as part of the training and I took some time to grasp the basics. From the team exercises we performed, I perceived how a project team can come together to ideate and collaborate with the client. Ideas are in sympathy to the consumer's feelings and needs making this design approach human-centric to provide innovative solutions that people love.

Design Thinking is also a way for businesses to design for change (especially in IT's rapidly changing environment and disruptive market) by getting a good understanding of the problem and its context and also using many techniques for iterative ideation - which is why it also fits seamlessly into the agile process.

To drive innovative solutions that people love Design Thinking's collaborative efforts include a diverse group of people in the process of generating ideas in a playful atmosphere for a serious task. Design Thinking does not feel like work but yields innovative solutions for complex problems, to deliver products and services.

What I enjoy the most is that when generating ideas no idea is too silly. There is no judgement when ideating as you come up with as may ideas as possible. From there the best ideas are selected then framed for the problem statement. You would be surprised at how ingenius the solutions can be.
















Wednesday, February 13, 2019

Virtual 2 Reality

Dabbling in creative writing tossed me into a world of cyber imagination and romance as I started writing my cyberpunk romance novel, "Virtual 2 Reality". Discovering my passion for creative writing again gave me an outlet to express all the crazy stuff that happens in my head and it's been therapeutic.

So I'm sharing my book which is still developing but I have put it online on a secure website for constructive criticism and votes.

Princess Reyno Eastwood and Colin Ruth are so attached but they have to overcome a system so ingrained in Reyno's culture before they can be together. All they have is the Jabber Board to communicate but now that Reyno knows her true identity she can embark on an adventure of a lifetime with Colin at her side.

Reyno did not know her true identity until beginning the Mochomet programme where computer programs that work in nanotechnology reverse the damage in the brain to the point where the brain functions at optimum capacity. She began to remember her past clearly. That she was stolen from her mother as a new born into a child trafficking system where she was controlled to do things she cannot remember through the microchip implanted in her brain. 

With these challenges facing them and the forbidding of slaves like Reyno to pursue romance, she is at a risk of relapsing the longer she waits to be united with Colin being stuck in the country she was abducted to.


Saturday, February 2, 2019

Microsoft Ignite Tour














I've been seeking to attend IT conventions as part of my quest to keep myself updated and in the loop and the Microsoft Ignite Tour at the Sandton Convention Center was a great way to start.


Various lectures centered on Azure (Microsoft's cloud) were given by experts and planned learning paths were available to select from on an online schedule builder. But we chose to attend sessions of which the titles peaked our interests and still we were not left dissappointed.

One of my favorite presentations was on "Understanding Data through Visualization" that introduced me to PowerBI which is a magnificent tool for data visualization through charts and graphs to present and explore the data.

My absolute favorite was on "Making your Application Intelligent" where the code behind Machine Learning was revealed and explained and we learned about ML.Net where you can experiment with Machine Learning.

The food was abundant and great. It was a well-planned event and I hope to attend more like this as they provide a great learning experience which intensely stimulates the intellect.









Sunday, December 23, 2018

Quantum Computing Programming is not Mystic

Chris Woodford (2018) asserts that when Moore's law does not apply to physics anymore, Quantum Computing is the next option. We are approaching a point where transistors will soon be as small as atoms. Enter the realm of Quantum Computing...

Quantum Computing is a radically different way computers will work but how will this affect software developers and programmers? Will programming change radically too?

Don't worry, the programming follows the same rules and is not some weird ethereal magical stuff that you imagine when thinking about quantum physics. But instead of bits, Woodford brings out that information will be stored as quantum bits also known as qubits.

Q# is a new quantum computing computer language by Microsoft that Paz (2017) infers is used for expressing quantum algorithms. He also mentions that because quantum processors are not widely available, Q# subroutines execute on a simulator.

In fact, you can start using the Q# programming language on Visual Studio 2017 and later as demonstrated by Mahesh Chand (2018). 

As technology develops rapidly, programming will continue to be the bedrock of systems and the rules by which we program won't change any time soon especially if even in quantum computing, programming functions on the same principles.

References:

1. Woodford, C. (2018) Quantum Computing [online] Available from: https://www.explainthatstuff.com/quantum-computing.html [Accessed 23 December 2018]

2. Paz, A. (2017) The Q# Programming Language [online]Available from: https//docs.microsoft.com/en-us/quantum/language/?view=qsharp-preview [Accessed 23 December]

3. Chand, M. (2018) Getting Started with Q# Programming [online] Available from: https://www.c-sharpcorner.com/article/getting-started-with-q-programming/ [Accessed 23 December 2018]

Tuesday, November 20, 2018

Chatbots Transforming Consumer Support

Consumer Support automation is a niche in the market that chatbots are rapidly filling more especially in major chat products such as Facebook Messenger. In layman's terms you can now shop online with assistance from a chatbot as you communicate what you are looking for (Schlicht, 2016).

Schlicht describes a chatbot as a service that can live on a major chat product and can be powered by rules or AI through machine learning as an example. It mimics human conversation to provide customer services.

I took the liberty to test one myself; a chatbot for Fandango on Facebook Messenger. Kajabi (2018) explains how Fandango is an app you can download to watch trailers, read reviews of recently released films, and interact with other people who love motion pictures. The chatbot on Facebook Messenger allows users to do some of those things without leaving Facebook.

Below is a screenshot of my experience with the chatbot:


Rathinam (2018) invokes that one of the greatest disadvantages of chatbots is that they are expensive to integrate as they must integrate with existing software to function. Aside from this drawback they lower the cost of having actual humans interact with consumers.

He also mentions how chatbots are not entirely efficient because they lack the contextual knowledge to effectively account for all the complexities of language and will therefore require more advanced AI to iron out their inefficiencies.

It seems that current chatbots are only good for the basic queries for a business. You may still need to call the Customer Helpdesk for the more advanced queries. But this is where chatbots have room to thrive as AI also advances. 

Niko Bonatsos has said that "~90% of our time on mobile is spent on email and messaging platforms. I would love to back teams that build stuff for places where the consumers hang out!” —  Managing Director at General Catalyst

Hence chatbots are truly a niche market and we can expect to see growth in their development in the near future.

References:

  1.  Schlicht, M. (2016) The Complete Beginner's Guide to Chatbots [online] Available from: https://chatbotsmagazine.com/the-complete-beginner-s-guide-to-chatbots-8280b7b906ca [Accessed on 20 November 2018]
  2. Kajabi (2018) 20 Examples of Facebook Messenger Chatbots to Inspire You in 2018 [online] Available from: https://blog.newkajabi.com/chatbot-examples [Accessed 20 November 2018]
  3. Rathinam,  P.(2018) AI 101: The Basics of Automation for Customer Support [online] Available from: http://customerthink.com/ai-101-the-basics-of-automation-for-customer-support/ [Accessed 20 November 2018]

Thursday, October 25, 2018

Simple Macro in Excel

As a growing software developer I've begun to contemplate what I can automate to make personal tasks easier and convenient for me. For instance, between my cousins I am in charge of an account we hold to save money for family funerals. I have an excel spreadsheet with everyone's details, 19 rows and 4 columns. I wanted to find a way to highlight a row when it's someone's birthday to display to anyone using the spreadsheet.

Excel macros came to mind and I got excited to figure them out. I remembered at my first job the senior developers used them quite often so I thought "Why not teach myself?"

Before you can use macros you have to enable the "Developer" ribbon in Excel. Go to File >> Options >> Customize Ribbon and select the Developer option in the list box on the right.

Go to your worksheet and select the Developer ribbon then select Macros on the left. In the pop-up, type the macro name, select "This Workbook" option then click the Create button. The Visual Basic Editor will open but before you add code to that module, go back to your worksheet.

Select Macros again and click the Options button. Enter the shortcut key combination that you want to fire your macro. Ctrl + Shift + something else will reduce the chances of overriding any predetermined shortcuts in excel. Add a description and click OK.

Now click the Edit button on the main macro pop-up and it will take you back to the editor. Below is some code I wrote for my birthday macro. The code has to be in Visual Basic for Applications(VBA).


















The code first loops through the birth date column to remove any highlights. Then it loops again to find the day and month equal to the current day and month to highlight the row of the person whose birthday it is. If there are no birthdays a message box pops up.

This was a simple and fun macro to do on excel for the first time. They can get complex and you can automate almost any repetitive task you find yourself doing on excel.

UPDATE: I've improved the macro to show upcoming birthdays as well by highlighting the rows        in a different color.

Saturday, October 13, 2018

From Paperless Offices to Server-less

First we were making our offices paperless and now we are basically trying to eliminate server rooms. Atleast, that's exactly what organizations can achieve through storage and server services over the internet (cloud). Techopedia describes cloud computing as the use of various services over the Internet such as servers, storage, databases, networking, software, analytics, intelligence and more.

Cloud computing is not so mystic when you consider its uses. The Microsoft Azure website brings out how "if you use an online service to send email, edit documents, watch movies or TV, listen to music, play games or store pictures and other files, it is likely that cloud computing is making it all possible behind the scenes. "

We can now begin to understand its most profound benefit: convenience. Not only are we creatures of habit but also convenience which is why technology is the bedrock of civilization.

Types of Cloud Services

The following are the four types of cloud services described in the Microsoft Azure website:

Infrastructure as a service (IaaS)

This is the most basic category of cloud computing services. IaaS entails renting IT infrastructure such as servers, virtual machines, storage, networks and operating systems, from a cloud provider on a pay-as-you-go basis.

Some examples taken from bmc.com are: DigitalOcean, Linode, Rackspace, Amazon Web Services (AWS), Cisco Metapod, Microsoft Azure, Google Compute Engine (GCE)

Platform as a service (PaaS)

PaaS reduces the complexity of creating web or mobile apps in that developers don't have to set up or manage the underlying infrastructure of servers, storage, network and databases needed for development.

Some examples taken from bmc.com are: AWS Elastic Beanstalk, Windows Azure, Heroku, Force.com, Google App Engine, Apache Stratos, OpenShift

Serverless Computing

Serverless computing focuses on building the functionality of software applications without spending time to continually manage the servers and infrastructures required to do so. The setup, capacity planning and server management is handled by the cloud provider. Resources are only used when a specific function or trigger occurs making serverless architectures highly scalable and event-driven.

Some examples taken from cloudreach.com are: AWS Lambda, Microsoft Azure Functions, Google Cloud Platform Cloud Functions

Software as a service (SaaS)

SaaS is a method for delivering software applications over the Internet on demand. This is typically done on a subscription basis. Cloud providers host and manage the software application and underlying infrastructure and handle any maintenance, like software upgrades and security patching, and users connect to the application over the Internet.

Some examples taken from bmc.com are: Google Apps, Dropbox, Salesforce, Cisco WebEx, Concur, GoToMeeting

Advantages

The top benefits of cloud computing also mentioned on Microsoft Azure include cutting the cost of the capital expense of buying hardware and software and setting up and running on-site data centers, speed, global scale, productivity, and performance. Cloud computing helps developers to focus on the important parts of the product rather than the underlying hardware and software infrastructure.

Disadvantages

As with every technology there are cons. One major disadvantage of cloud computing that Andrew Larkin (2018) addresses is downtime. If your business cannot afford an outage then do not use cloud services as they are entirely dependent on internet access.

Another con to take note of is inflexibility which Susan Ward (2018) warns us of. Make sure your cloud vendor allows you to migrate to another and is not trying to lock you down forever as a client. It's also very restrictive if the applications or data formats of a cloud provider do not allow easy transfer or conversion of information into other systems.

Susan also brings out the issues with customer support and its expenses especially if your business needs a rapid response to customer support issues.

In conclusion, cloud computing is very convenient for start-ups in that they can focus on the product rather than the underlying hardware and software infrastructure especially if the business can effectively handle the disadvantages of cloud computing.

Cloud computing is the way forward for most businesses because of its advantages and most Internet users use it everyday for convenience.

References:

  1. Techopedia (n.d.) Cloud Computing [online] Available from: https://www.techopedia.com/definition/2/cloud-computing [Accessed 13 October 2018]
  2. Mirosoft Azure (n.d.) What is Cloud Computing? [online] Available from: https://azure.microsoft.com/en-in/overview/what-is-cloud-computing/ [Accessed 13 October 2018]
  3. BMC (n.d.) SaaS vs PaaS vs IaaS: What’s The Difference and How To Choose [online] Available from: https://www.bmc.com/blogs/saas-vs-paas-vs-iaas-whats-the-difference-and-how-to-choose/ [Accessed 13 October 2018]
  4. Stewart, N. (2017) Serverless Computing - What is it? [online] Available from: https://www.cloudreach.com/blog/serverless-computing-what-is-it/ [Accessed 13 October 2018]
  5. Larkin, A. (2018) Disadvantages of Cloud Computing [online] Available from: https://cloudacademy.com/blog/disadvantages-of-cloud-computing/ [Accessed 13 October 2018]
  6. Ward, S. (2018) The Cons of Cloud Computing for Business [online] Available from: https://www.thebalancesmb.com/disadvantages-of-cloud-computing-4067218 [Accessed 13 October 2018]

Wednesday, October 10, 2018

The Importance of Unit Testing

One of the qualities of a good software developer is high attention to detail but nevertheless, errors can escape even the very best of developers. That is why testing and debugging is a huge part of the Software Development Life Cycle (SDLC). Software testing even has its own field of specialization; some organizations hire testers who are specialized in testing software, instead of assigning the responsibility to software developers. However, every software developer needs to know how to test their own code to produce quality deliverables.

Four Levels of Software Testing

The "Software Testing Fundamentals" website explains how there are four levels of testing in the SDLC namely: unit testing, integration testing, system testing and acceptance testing.

In unit testing, individual components of a software application are tested to validate that each component performs as designed.

In integration testing, individual components are combined and tested as a group to expose faults in how they interact with each other.

In system testing, the complete, integrated system is tested to determine if it meets specified requirements.

In acceptance testing, the system is tested to evaluate its compliance with business requirements and determine whether it's acceptable for delivery.

Unit Testing

The website also describes unit testing in detail. A unit/component is the smallest, testable part of a software application like a program, function, procedure or method. These units are tested using a software testing method called the "white box testing method", in which the internal structure of the item being tested is known to the tester. Unit testing is often performed by software developers themselves. Testing is based on an analysis of the internal structure of the component or system.

Some of the benefits of unit testing according to Ekaterina Novoseltseva (2017) is that it improves the quality of code, bugs are found at an early stage and it helps in maintaining and changing the code.

An Example of a Unit Test

Below is a method that truncates a string:

public static class StringExtender
    {
        public static string Truncate(this string source, int length)
        {
            //If source is null, return null.
            if (source.Length > length)
            {
                source = source.Substring(0, length);
            }
            return source;
        }
    }

The following code is a unit test built with MSTest on Visual Studio 2017:

    [TestClass()]
    public class StringExtenderTests
    {
        [TestMethod()]
        public void TruncateTest()
        {
            //arrange
            string source = "Original Source";
            int length = 0;
            string sourceTruncated = string.Empty;

            //act
            sourceTruncated = source.Truncate(length);

            //assert
            Assert.AreNotEqual(source, sourceTruncated);
        }
    }

The code that is added in the test method tests whether the original string has been modified to indicate that the truncate method has been implemented. When you run the test you will see whether the test failed or was successful. When the test passes it means the truncate method was executed successfully.

Interview with Lulu Ndhlovu

Lulu is a software developer with 4 years of experience working mainly with web applications. It was a delight interviewing her to gain insight into the importance of unit testing.

Q: Where did you first learn about unit testing?

A: In my first job at Boxfusion

Q: How often do you practice unit testing?

A: Not often I only did it once.

Q: How has it impacted your performance and quality of work?

A: It was very convenient because we were doing testing with Paypal integration so that's something important you need to make sure is working. We tested the methods that were necessary that needed to call the services for Paypal.

Q: Do you recommend unit testing to all developers and organizations?

A: Yeah. If you have the time in your project.

In conclusion, unit testing is the best way to ensure that components of your software application work individually. Every developer should acquire the skill especially for projects that cannot afford to have minimum security.

References:

  1. Software Testing Fundamentals (n.d.) Software Testing Levels [online] Available from: http://softwaretestingfundamentals.com/software-testing-levels/ [Accessed on 10 October 2018]
  2. Software Testing Fundamentals (n.d.) Unit Testing [online] Available from: http://softwaretestingfundamentals.com/unit-testing/ [Accessed on 10 October 2018]
  3. Software Testing Fundamentals (n.d.) Unit Testing [online] Available from: http://softwaretestingfundamentals.com/white-box-testing/ [Accessed on 10 October 2018]
  4. Novoseltseva, E. (2017) Top 8 Benefits of Unit Testing [online] Available from: https://apiumhub.com/tech-blog-barcelona/top-benefits-of-unit-testing/ [Accessed on 10 October 2018]

Monday, October 8, 2018

The Ultimate Graphics Card

I often wonder how life would be like if we could use technology to extract data from the human brain as we see in movies. Like lodging a microchip into the brain that can transmit imagery from the things we imagine, dream or remember, and even text from the things we think.

Life would not be private, but maybe crime could be controlled. But on a darker note, the nature of every human would be exposed. On the upside, we could create our own graphics from the imagination and transmit those images electronically directly from the brain to devices. Graphic designing on a whole new level.

There would be more astounding consequences on ICT. The way we communicate via social media would be almost telepathic.

So anyway, this has sparked curiosity on how graphics cards work because a graphics card is lodged onto the motherboard so that the CPU (the brain of the computer) can translate binary data into an image you can see on the screen (Tyson and Wilson, 2001).

Jeff Tyson and Tracy Wilson describe how the graphics card receives information about the image from the CPU that is carrying out instructions from a software application. It then decides how to use the pixels on the screen to create the image before sending that information to the screen through a cable.

They also explain how the graphics card bears the load of creating an image out of binary data because this is too demanding of a process for the CPU. It uses a motherboard connection for data and power (however newer cards need more power so they also have a direct connection to the computer's power supply), a processor to decide what to do with each pixel on the screen, memory to hold information about each pixel and to temporarily store completed pictures, and a monitor connection so you can see the final result.


A graphics card is a printed circuit board like the motherboard and houses the Graphic's Processing Unit (GPU) and RAM for memory and a BIOS chip (Tyson and Wilson, 2001). The GPU is like a CPU except it does the complex mathematical and geometric calculations specifically to render graphics. The RAM connects directly to the digital-to-analog converter (DAC) which translates the image into an analog signal that the monitor (screen) can use thus sending the final picture to the screen through a cable.

If we had a graphics card lodged in our brains, we would need biotechnology to transfer the information about the images we conjure in the brain to the graphics card to an external device. Wouldn't that be neat?

References:

Tyson, J. and Wilson T.V. (2001) How Graphics Cards Work [online] Available from: https://computer.howstuffworks.com/graphics-card.htm [Accessed on 8 October 2018]

Saturday, August 18, 2018

Firebird SQL

Here's where we see the beauty of open source software. "Open source software", according to Opensource.com, means that the software's source code is freely accessible and can be inspected, modified and enhanced by any programmer, plus it's freely shared so anyone can use it for free without worrying about license fees.

Firebird SQL is a relational database management system much like the Microsoft owned SQL Server, except it's open source. Yay! Proprietary software is opposite to open source software in that the creators have exclusive ownership of the source code and it's not free.

Firebirdsql.org lists all the features of Firebird SQL which are compatible with the ANSI SQL standard which means you don't have to learn another standard other than SQL (Structured Query Language), which the WhoIsHostingThis website describes as the standard language for Database Administrators; you can continue using your SQL skills with Firebird. The server-side scripting however, is different from Microsoft SQL Server's Transact SQL as portrayed by the DB-Engines website. You will have to learn PostgreSQL which is not that much different so can be easily learned especially if you know Transact SQL.

This means a great deal for developers and developers in training and many organizations in that by using Firebird SQL they get the same benefits of SQL Server for free and can use it on a number of hardware and software platforms whereas Microsoft SQL Server supports only the Windows operating system and Linux as of SQL Server 2017.

References:


  1. Opensource (n.d.) What is Open Source? [online] Available from: https://opensource.com/resources/what-open-source [Accessed 18 July 2018]
  2. Firebirdsql (n.d.) Features [online] Available from: https://www.firebirdsql.org/en/features/ [Accessed 18 July 2018]
  3. WhoIsHostingThis [n.d.) ANSI SQL Standards [online] Available from: https://www.whoishostingthis.com/resources/ansi-sql-standards/ [Accessed 18 July 2018]
  4. DB Engines (n.d.) Firebird vs Microsoft SQL Server [online] Available from: https://db-engines.com/en/system/Firebird%3BMicrosoft+SQL+Server [Accessed 18 July 2018]

Wednesday, July 25, 2018

Smart Cities


Imagine living in or visiting a city where you could find parking easily using an app through a smart parking meter through which you could also make digital payments,  or where traffic does not get too congested because of smart traffic management, or where public transport is efficient through smart public transit, or where sanitation has been greatly improved...

IoT Agenda (2017) discusses these features of a smart city - built-in with sensors for its smart function even in buildings to ensure public safety by monitoring the structural health of buildings.

Urbanization is also said to be expected to increase significantly in the near future. "Smart technology will help cities sustain growth and improve efficiency for citizen welfare and government efficiency in urban areas in the years to come."

A smart city is defined as a municipality that uses information and communication technologies to increase operational efficiency, share information with the public and improve both the quality of government services and citizen welfare.

Some examples of smart cities listed include Kansas City which consists of smart streetlights, interactive kiosks and more than 50 blocks of free public Wi-Fi. Available parking spaces, traffic flow and pedestrian hotspots are all publically available through the city's data visualization app.

San Diego is also a smart city listed on IoT Agenda, which installed 3,200 smart sensors in early 2017 to optimize traffic and parking and enhance public safety, environmental awareness and overall livability for its residents. Solar-to-electric charging stations are available to empower electric vehicle use, and connected cameras help monitor traffic and pinpoint crime.

The construction of smart cities from the ground up has also already begun. According to Forbes (2018) Bill Gates has invested $80 million toward the development of Belmont, a smart city in Arizona. There are also plans for autonomous vehicles and a sophisticated data hub in Belmont.

As if straight from a Hollywood basement, smart cities depend entirely on ICT to run its operations daily and improve the quality of life for its citizens. Rome was not built in a day and so are smart cities gradually accommodating urbanization and transforming urban living.

References:
  1. IoT Agenda (2017) Smart City [online] Available at: https://internetofthingsagenda.techtarget.com/definition/smart-city [Accessed 25 July 2018]
  2. Forbes (2018) The Smart Way to Build Smart Cities [online] Available at: https://www.forbes.com/sites/hbsworkingknowledge/2018/04/04/the-smart-way-to-build-smart-cities/#44f1b5347b19 [Accessed 25 July 2018]


Friday, July 6, 2018

A Dichotomy Between Agile and RAD Development

Developing software requires a methodology to produce a quality software product on time and within budget.

There are various methods within the Software Development Life Cycle (SDLC) to select from and each can be selected according to the project's needs. But many organizations these days employ one method for all their software projects.

On the Version One website agile is described as an iterative and incremental methodology where the software team iterates through a project, delivers software incrementally, and continually plans and tests the software application.

On the other hand, RAD (Rapid Application Development) is described as being based on rapid prototyping and iterative and incremental development without any specific planning involved, by Tutorials Point. 

A prototype is a working model that is functionally equivalent to a component of the product (Tutorials Point).

Below are the advantages and disadvantages of Agile and RAD development listed on Tutorials Point.

Agile
Advantages Disadvantages
Is a very realistic approach to software development. Not suitable for handling complex dependencies.
Promotes teamwork and cross training. More risk of sustainability, maintainability and extensibility.
Functionality can be developed rapidly and demonstrated. An overall plan, an agile leader and agile PM practice is a must without which it will not work.
Resource requirements are minimum. Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet the deadlines.
Suitable for fixed or changing requirements Depends heavily on customer interaction, so if customer is not clear, team can be driven in the wrong direction.
Delivers early partial working solutions. There is a very high individual dependency, since there is minimum documentation generated.
Good model for environments that change steadily. Transfer of technology to new team members may be quite challenging due to lack of documentation.
Minimal rules, documentation easily employed.
Enables concurrent development and delivery within an overall planned context.
Little or no planning required.
Easy to manage.
Gives flexibility to developers.

RAD
Advantages Disadvantages
Changing requirements can be accommodated. Dependency on technically strong team members for identifying business requirements.
Progress can be measured. Only system that can be modularized can be built using RAD.
Iteration time can be short with use of powerful RAD tools. Requires highly skilled developers/designers.
Productivity with fewer people in a short time. High dependency on modeling skills.
Reduced development time. Inapplicable to cheaper projects as cost of modeling and automated code generation is very high.
Increases reusability of components. Management complexity is more.
Quick initial reviews occur. Suitable for systems that are component based and scalable.
Encourages customer feedback. Requires user involvement throughout the life cycle.
Integration from very beginning solves a lot of integration issues. Suitable for project requiring shorter development times.

References:

Version One (n.d.) The Evolution of the Agile Software Methodology [online] Available at: https://www.versionone.com/agile-101/ [Accessed 6 July ]

Tutorials Point (n.d.) SDLC - Agile Model [online] Available at: https://www.tutorialspoint.com/sdlc/sdlc_agile_model.htm [Accessed 6 June]

Tutorials Point (n.d.) SDLC - RAD Model [online] Available at: https://www.tutorialspoint.com/sdlc/sdlc_rad_model.htm [Accessed 6 June]



Sunday, July 1, 2018

Simulation Software

Although many software organizations do not use software simulation in the life-cycle of software projects because it takes time, money and human resources, it is a good idea in that the project team can early predict the dynamic of the end product to know what elements will work and it is also good for showing the client how the system will work and look like, for their confidence.

iSpring Solutions describes software simulation as a model of your software that demonstrates its key functions and operations. 

As the economy is changing, a fast and flexible reaction to the market is required which is what Talumis explains on their website. To predict customer demands and future changes, software simulations are your best option.

Here are some of the uses for simulation software taken from anylogic.com:
  • Simulation modeling solves real-world problems safely and efficiently.
  • It provides an important method of analysis which is easily verified, communicated, and understood.
  • Across industries and disciplines, simulation modeling provides valuable solutions by giving clear insights into complex systems.
  • Simulation enables experimentation on a valid digital representation of a system.
  • Unlike physical modeling, such as making a scale copy of a building, simulation modeling is computer based and uses algorithms and equations.
  • Simulation software provides a dynamic environment for the analysis of computer models while they are running, including the possibility to view them in 2D or 3D.
  • Simulation in business is often utilized when conducting experiments when a real system is impossible or impractical, often because of cost or time.
References:

iSpring Solutions (n.d.) What is Software Simulation? [online] Available at: https://www.ispringsolutions.com/articles/what-is-software-simulation.html [Accessed 1 July 2018]

Talumis (n.d.) What is Simulation? [online] Available at: https://www.talumis.com/what-is-simulation/ [Accessed 1 July 2018]

Anylogic (n.d.) Why Use Simulation Modelling? [online] Available at: https://www.anylogic.com/use-of-simulation/ [Accessed 1 July 2018]

Thursday, June 28, 2018

Angular JS is Your Programming Framework

Angular JS is a rich, clean and high performing web application framework and is open source software.

It is used for dynamic websites to enable seamless navigation to create a better user experience in most popular browsers.

As for security, Angular JS does not pose a threat to an organization's IT infrastructure because its focus is exclusively on data representation.

https://www.awwwards.com/practical-uses-of-angularjs-create-a-single-page-application-spa-or-a-website-menu-in-an-instant.html

https://stackoverflow.com/questions/28017816/what-browsers-does-angularjs-work-with

http://blog.backand.com/angular-enterprise-dev/

Tuesday, June 12, 2018

What is Git?

Git is an open source, secure and flexible version control system which is popular and widely used by developers around the world.

When you are creating software projects, you have to consider a repository for your projects and version control systems are a way for you to save versions of your code to access anytime and also for multiple developers to work on the same project.

Follow this link to learn about Git and begin using it: https://www.atlassian.com/git/tutorials/what-is-git

How to Access the Metaverse

In February this year, Bernard Marr predicted that "in 2022, we'll see new, lighter, more portable VR devices, so instead of having...