Category: Technology

Articles about technology, IT, programming and anything to do with Computer Science.

  • What is Active Directory?

    Active Directory Demystified

    When I was first attempting to get into IT Active Directory was perplexing to me. Active Directory seemed so simple to those around me but was a huge gap in my early IT understanding. The goal of this post is to give you a high level overview of Active Directory to hopefully save you from this same fate.

    This is in no way comprehensive and simply serves as a dip into the pool of what is possible with Active Directory.

    What is Active Directory?

    Active Directory is hosted as a service on a Windows server.

    Active Directory is at its core is a company’s employee directory. Think of it as a large, organized list of all employees and various information about them such as phone number, email, location, and their manager’s name.

    Books Library” by Thomas Kelley/ CC0 1.0

    Digging in deeper, Active Directory also serves as the central source of user names and passwords for all computers in the company. Rather than having accounts “local” to individual computers, the account is created once on the Active Directory server. All computers in the company are “joined” to the Active Directory network which allows them to forward all requests to log in onto the server. If the user name and password is correct in the server the computer creates a local profile for the user.

    Why do we need Active Directory?

    Let me paint you a picture. Imagine you are the IT Director at a company with 2000 employees. Every employee has a desk with a computer that they log into. To promote effective use of resources the CEO asks you to allow all employees to log into any computer at any time.

    Without Active Directory, this would simply not be possible. You would need to create a user name and password for 2000 employees per 2000 computers. Additionally, if a single employee needed to update their password you would need to update that password on all 2000 computers.

    How do you organize Active Directory?

    I mentioned earlier that the employee directory was organized. How do you achieve this organization in Active Directory? Organizational Units (OUs) and Groups.

    Organizational Units are essentially folders to assist with creating a hierarchy and separating user accounts based on Location, Job function or something else. A common approach is to create OUs for each of your locations, departments and job roles. By staying organized with these OUs you can easily understand how many employees are in each department, location or role.

    Groups are another form of organization. Groups are a way to put users together where the lines aren’t as simple as the larger OU categories. Additionally, a user can only be in a single OU but they can be in many groups.

    Groups are commonly used as a way to provide access to applications and file shares.

    What’s Next?

    Dig in deep with Microsoft’s official learning path https://learn.microsoft.com/en-us/training/paths/active-directory-domain-services/

  • C Quickstart Guide for Programmers

    Code Technology” by Markus Spiske/ CC0 1.0

    C as a second language.

    I have been writing code in some form for 11 years. Something that I do often is pick up another programming language in an attempt to learn new things and understand programming at a deeper level. When learning a new programming language there is always this period at the start where I want a quick start guide that will quickly go over the basic concepts of a language so I can start writing code straight away.

    This post will serve as that guide.

    Note: I am not an expert at C, I am learning along with you. I simply am curating the things that I have learned so that those the come after me can jump in a bit faster.

    Why should you learn C?

    • As of 5/12/25 C ranks as 3rd in the TIOBE index for the most popular language today
    • C excels at giving the programmer full control of the operating system and its memory
    • C is considered the lingua franca of the programming world, learning C can help you understand programming at a deeper level
    • Correctly written C is very fast and serves as a fundamental skill in systems and other low level programming.

    History of and Facts about C

    C Hello World Example

    Including this in a quickstart guide only as a way to give you a functioning program straight away and to see how some C code looks in action.

    • #include <stdio.h> – This line includes the header file for the standard I/O library. This includes the definition for printf.
    • int main() – The main function which serves as the entry point to the program.
    • printf(“Hello World”) – Prints out the text and adds a newline character at the end.
    • return 0 – Exit the program and return no errors.

    Data Types

    Data types in C

    • int
      • Range: -2,147,483,648 to 2,147,483,647
      • Size: 4 Bytes
    • char
      • Range: -127 to 127 or 0 to 255
      • Size: 1 Byte
    • float
      • Range: 1.2E-38 to 3.4E+38
      • Size: 4 Bytes
    • double
      • Range: 1.7E-308 to 1.7E+308
      • Size: 8 Bytes
    • void
      • Used to indicate the absence of a value
      • Can only be used for pointers and function return types

    Variable Declaration

    How to declare a variable in C

    TYPE IDENTIFIER = VALUE;

    int main() {
        int age = 42;
        float cash = 5322.47;
        double pi = 3.14;
        
        return 0;
    }Code language: C++ (cpp)

    Arrays

    How to create and use an array in C

    Array Declaration in C

    TYPE IDENTIFIER[NUMBER_OF_ELEMENTS];

    int main() {
        //Creates an array of type int
        //Contains 4 elements
        int ages[4];
        
        return 0;
    }Code language: C++ (cpp)

    Array Initialization in C

    Initializing an array in C is very simple and similar to declaration.

    int main() {
        int ages[4] = {29,38,42,19};
        //You can omit the size when 
        //initializing on the same line
        int ages[] = {29,38,42,19};
        //Init all values to 0 (Or something else)
        int ages[4] = {0};
        
        return 0;
    }Code language: C++ (cpp)

    Functions

    How to create and use a function in C

    Function Declaration in C

    [KEYWORDS][RETURN TYPE][IDENTIFIER](PARAMETERS)

    int sum(int num1, int num2){
        return num1 + num2;
    }Code language: JavaScript (javascript)

  • You Need A Home Lab, Here’s Why And How To Make It Happen

    What is a home lab, why do you need one and how can you get started?

    What is a home lab?

    A home lab is a concept in the Information Technology field that describes a technology sandbox environment that allows a learner to get hands on experience with complex systems in order to gain industry skills and further their career.

    Put simply: Set up enterprise technology at your home so you have a safe space to learn how it works.

    Why do you need a home lab?

    Whether you are trying to land your first Information Technology role, or you are trying to move up from Service Desk into more specialized roles, a home lab is a valuable catalyst to a successful career.

    Setting up enterprise systems in your home allows you to get real experience configuring tools that are used to run businesses in the real world.

    The Information Technology field is competitive and if your goal is to excel then a home lab will give you a significant edge over those that do not take the time to prioritize one.

    What do you need?

    I am going to try to keep this guide as free as possible by leveraging trials and free services. The main exception to this is at a minimum you will need a decent computer.

    Additionally, the goal of this guide is to create a realistic, scalable entry point so as your knowledge grows you are able to add more services without making your previous investments obsolete.

    • Computer with Windows installed
    • Computer that will be used for your server. (All data will be wiped on this device)
    • Flash Drive
    • Access to the Internet

    Compute

    To get started you need a computer. This is the only time where spending a bit of money is unavoidable. The good news is that the computer you use can be of virtually any power level and age. If you have old computers laying around (including laptops) then you are good to go. If not, you will need to source one from somewhere.

    You are looking for as many CPU cores and as much RAM as possible. These resources can be spread across as many devices as you have on hand.

    Get creative with this, I personally use an army of Lenovo tiny form factor PCs in a cluster as they are silent, take up minimal space, and due to my career in IT have been quite accessible.

    Lenovo M700, 4 Cores, 8GB of RAM:

    https://amzn.to/3Yxrhy3 – $68

    A tiny form factor lenovo computer. Model: M700
    Lenovo M700 Tiny Form Factor PC

    Virtualization

    Next, you need to get an operating system installed that will serve as a foundation for creating and running virtual machines. Proxmox is the obvious choice here as it is free and is very similar to enterprise virtualization products.

    You will also need a tool called Rufus, this will allow you to upload the ISO onto the your USB flash drive so that you can boot to the Proxmox Installer.

    • Download the latest version of Rufus here: https://rufus.ie/en/
    • Plug in your USB flash drive
    • Open Rufus and Select your Flash Drive
    • Browse for the Proxmox ISO
    • Accept any prompts and click create with the default settings
    • Wait for Rufus to tell you it is finished

    A Word About Backups

    The home lab outlined here has no mention of backups. This is because a proper backup solution is going to cost money in the form of drives or cloud storage. A home lab by nature is supposed to contain non production data. If your home lab begins to become something that you care about then you should consider investing in a cloud backup solution.

    To be continued…