Connect to Exchange Online using PowerShell

This one was a new experience for me. After brewing a good cup of Caturra variety coffee at home, a friend contacted me wanting to connect to Exchange online using PowerShell. This was due to some strange email activity with one of her users. Connecting to Exchange Online using PowerShell allows administrators to manage Exchange Online settings, mailboxes, and other features remotely.

First you need to check if the Exchange Online module is installed:

Get-Module -ListAvailable -Name ExchangeOnlineManagement

If the module is not installed, open a Windows Powershell and run as Administrator:

Install-Module -Name ExchangeOnlineManagement -Force

If you get an error something like “\ExchangeOnlineManagement.psm1 cannot be
loaded because running scripts is disabled on this system.” Run this command:

Set-ExecutionPolicy RemoteSigned

Then try again the below if needed.

Follow the prompts. Yes, you can install from untrusted repositories. Press Y to confirm. If you already have the module installed and want to update it:

Update-Module ExchangeOnlineManagement

Now, connect to Exchange online:

Connect-ExchangeOnline

Enter your credentials in the pop up window. Usually using MFA (Multi-factor Authentication).

After you connect you can run the desired command against any inbox. For example we wanted to check all rules on a shared inbox:

get-inboxrule -mailbox sharedbox@hola.com  | fl 

After you’re done, you can disconnect:

Disconnect-ExchangeOnline -Confirm:$False

Remember to contact me if you have any questions or like to collaborate. Thanks!

sss_cache sysdb_domain_cache_connect: DB version too old

I got this error sss_cache when trying to add a new user to one of my clients Linux (RedHat 8.10) box.

I have never encounter this issue before at any Linux distro I have touched. After brewing a good cup of Caturra coffee variety from my friend’s coffee farm in Chiriqui, Panama I found the reason.

According to my research this error is because the SSSD version was upgraded, but your the SSSD cache database is still formatted for the older version [0.23] instead of the expected [0.24] for some reason. I really don’t know how or who updated the SSSD version.

SSSD (System Security Services Daemon) is a Linux system service that manages user authentication, authorization, and identity lookup. It acts as a smart bridge between your local Linux computer and external directory services.

Fixing sss_cache sysdb_domain_cache_connect: DB version too old

Even after getting this error, I noticed the user was still created. Very strange! Anyways, here is the fix for this error:

Run the following commands as root or with sudo:

# Stop the SSSD service
systemctl stop sssd
# Remove the outdated cache files
rm -rf /var/lib/sss/db/*
# Restart the SSSD service
systemctl start sssd

Removing cache files in /var/lib/sss/db should fix the issue, but note that removing cache files will also remove all of your cached credentials.

Give it a try and then try to add a user again.

What Are Bash Special Parameters?

What are Bash special parameters is a topic I have been running away from for a while. Not anymore! I finally started getting more into bash scripting basics.

Special parameters are predefined variables that Bash automatically creates. You don’t assign values to them. This was something new to me. So, after brewing a good cup of Latin America coffee I decided to write this simple guide about bash special parameters.

Below are the usual examples for bash special parameters in Linux:

$0
$1
$2
$#
$?
$$
$!
$*
$@

They provide information about:

  • the script
  • command arguments
  • process IDs
  • exit status
  • background jobs

As a Linux admin this is useful for automate backups, monitor services, manage users, log files, restart things that fail. Without special parameters, scripts become hard-coded and inflexible. For example:

tar -czf backup.tar.gz /home

You can write:

tar -czf "$1" "$2"

Where you can pass the values using a script:

tar -czf <thebackup.tar.gz> <what-to-backup>

Below is a good table to remember about bash special parameters:

ParameterMeaning
$0Script name
$1-$9Arguments
$#Number of arguments
$?Exit status
$$Current shell PID
$!Last background PID
$*All arguments as one string
$@All arguments separately

Create a practice .sh file. For example test.sh and place the code below:

#!/bin/bash
echo "Script Name: $0"
echo "Argument Count: $#"
echo "First Argument: $1"
echo "Second Argument: $2"
echo "Exit Status: $?"
echo "Current PID: $$"

Make it executable:

chmod +x test.sh

Then run it:

./test.sh coffee beans

Study the output and let me know if you have any questions!

Remember, I create unique IT Handyman accessories. See them below and if you like to support me place an order:

What Are The CTRL Commands In Linux

I recently discover more about the CTRL commands options in Linux. I have to admit, this is something I should have learnt many years ago. I have been using some of these CTRL commands for a while without noticing what they really meant. So, I decided to create this short Linux terminal tutorial for future reference. I hope it helps someone out there!

But, first I needed to brew a great cup of Caturra coffee at home to get inspired. The CTRL commands are divided into four main sections.

Process Management

  • Ctrl+C: Interrupts/kills the current running command or process.
  • Ctrl+Z: Suspends the current process (use fg to resume).
  • Ctrl+D: Sends EOF (End of File), closes the terminal, or logs out.
  • Ctrl+S: Freezes the screen/stops screen output.
  • Ctrl+Q: Unfreezes the screen output.

Terminal Screen Management

  • Ctrl+L: Clears the screen (redraws the screen), similar to the clear command.
  • Ctrl+R: Searches backward in command history.
  • Ctrl+G: Exits history search mode.

Command Line Editing & Navigation

  • Ctrl+A: Moves the cursor to the beginning of the line.
  • Ctrl+E: Moves the cursor to the end of the line.
  • Ctrl+U: Cuts/deletes everything before the cursor.
  • Ctrl+K: Cuts/deletes everything after the cursor.
  • Ctrl+W: Deletes the word before the cursor.
  • Ctrl+Y: Pastes text previously cut using Ctrl+U, K, or W.
  • Ctrl+B: Moves the cursor backward one character.
  • Ctrl+F: Moves the cursor forward one character.

Terminal Specific (GUI/Editor)

  • Ctrl+Shift+C: Copies highlighted text in the terminal.
  • Ctrl+Shift+V: Pastes text into the terminal.
  • Ctrl+Shift+T: Opens a new tab in the terminal.

Best Cafes in NYC for Remote Work During World Cup 2026

If you’re coming to New York City for the FIFA World Cup 2026 and still need to get work done, you’re not alone. I’ve worked remotely across this city for years, and I know exactly what you need. You want great coffee, reliable WiFi, enough space to focus, and easy subway access so you don’t waste time. New York moves fast, especially during big events, so choosing the best cafes can make or break your day.

The subway will be your best friend. It runs everywhere, it’s faster than traffic, and it keeps you moving without stress. Skip the ride share apps and move like a local. You’ll get more done and still enjoy the city.

Let’s get straight to the five cafés that actually work for remote work.


1. Devoción – Bright Space, Serious Focus Best Cafes in NYC

Devoción in Williamsburg is one of those rare places where you walk in and instantly feel productive. The space is filled with natural light, high ceilings, and plants that make it feel calm even when the city gets loud. As a remote worker, that environment matters because it helps you stay focused longer without feeling drained. The coffee is also fresh and bold, which gives you that extra push when deadlines hit.

Take the L train to Bedford Avenue. Walk a few minutes and you’re there. Grab a table early because it fills up fast, especially during big events like the World Cup. Set up your laptop, order a pour-over, and lock in your work session. This place makes it easy to stay productive for hours.

2. Birch Coffee – Quiet Energy in Manhattan

Birch Coffee is a go-to spot when you need quiet focus in Manhattan. This café keeps things simple and calm, which is exactly what remote workers need. You won’t find loud music or constant distractions here. Instead, you get a relaxed space where people actually respect the work environment.

Take the N, R, or W train to 28th Street. Walk a short distance and step inside. Find a seat, open your laptop, and start working without interruptions. The coffee is smooth and reliable, which helps you stay consistent throughout the day. If you need to take calls or think clearly, this spot works.


3. Partners Coffee – Creative Brooklyn Work Vibe

Partners Coffee gives you that classic Brooklyn creative energy. You’ll see designers, freelancers, and entrepreneurs all working on something real. That kind of environment pushes you to stay focused and get things done. It feels like you’re part of something, not just sitting alone with your laptop.

Take the L train to Bedford Avenue. Walk a few blocks and settle in. Order a latte and pick a spot near the window if you can. You’ll get natural light and a view of the neighborhood moving around you. This place balances productivity and inspiration perfectly.

4. Bluestone Lane – Clean, Comfortable, and Reliable

Bluestone Lane offers a clean and comfortable setup that remote workers appreciate. The seating is practical, the WiFi is strong, and the overall vibe feels organized. During the World Cup, when the city gets chaotic, having a place like this keeps you grounded.

Take the 6 train to Astor Place if you visit their East Village location. Walk a few minutes and grab a table. Order a flat white and settle into your workflow. This spot works well for longer sessions when you need consistency and comfort.


5. Think Coffee – Work-Friendly and Spacious

Think Coffee has built a reputation as a remote work-friendly café, and it shows. The seating is spacious, the atmosphere feels welcoming, and you won’t feel rushed out the door. That matters when you’re trying to stay productive for hours. it is one of best cafes in New York City for remote work.

Take the A, C, or E train to 14th Street. Walk a short distance and set up your workspace. Order a drip coffee and get into your rhythm. This café gives you room to think, work, and stay focused without distractions.

Why the Subway Is the Smart Move finding Best Cafes

If you try to rely on cars during the World Cup, you’ll lose time fast. Traffic will slow you down, and delays will frustrate you. The subway keeps things simple and efficient, especially when you’re moving between meetings, cafés, and match locations.

Learn a few key lines and move with confidence. You’ll save energy and stay on schedule. Every café on this list is easy to reach by train, which makes your day smoother.


Best Cafes for Remote Work During the World Cup Hits Different

Working remotely during a global event like the FIFA World Cup 2026 feels different. The city has energy, people from all over the world, and constant movement. But that doesn’t mean you lose productivity. You just need the right environment and the best cafes available walking distance.

These cafés give you that balance. You get great coffee, reliable space, and the ability to focus when it matters. Then, once you’re done, you step outside and jump right back into the excitement.

New York City can feel overwhelming, especially during major events. But if you move smart and choose the right cafés, you can stay productive and still enjoy everything happening around you. Remote work doesn’t stop just because you’re traveling. It just changes how you approach your day.

Find your spot, open your laptop, and get to work. Then reward yourself by stepping into the city and experiencing it fully.

Consider grabbing one of my designs if you found my content helpful:

Recommended products

Edit DNS Settings Using macOS Terminal

I was surprised how easy is to edit DNS Settings using the macOS Terminal. I also noticed using the GUI in the mac sometimes doesn’t ‘keep’ the settings for some reason. After I visited one of my favorite local beer breweries in Brooklyn one of my clients contacted me.

The issue was setting up a local DNS for all the macOS clients at their office. All the clients mac computers were joined to AD and were loosing their network shared connection. Usually when you join a mac to Active Directory it auto-mounts the user’s network drive.

I found the issue was a bad DNS configuration. So, I remote to the clients office and ran the following Terminal commands:

Edit DNS Settings using our friend the Terminal

To identify the current network devices/services:

networksetup -listallnetworkservices

You should see an output:

Ethernet
Thunderbolt Bridge
Wi-Fi

In this case, we wanted to check the DNS for Ethernet:

networksetup -getdnsservers "Ethernet"

If none are set, you will see:

There aren't any DNS Servers set on Ethernet.

Oh oh! This was the issue for this client. So, I fixed it running:

sudo networksetup -setdnsservers "Ethernet" 172.16.100.2 172.16.100.3

Run again to verify:

networksetup -getdnsservers "Ethernet"

You should see the newly DNS servers set:

172.16.100.2 
172.16.100.3

If you need to do this for Wi-Fi, just replace Ethernet with Wi-Fi:

sudo networksetup -setdnsservers "Wi-Fi" 172.16.100.2 172.16.100.3

In case you need to revert and set DNS to DHCP: (automatically assigned DNS)

sudo networksetup -setdnsservers "Ethernet" "Empty"

or

sudo networksetup -setdnsservers "Ethernet" "DHCP"

You may need to flush the cache:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

That’s all! To Edit DNS Settings using the Terminal in macOS is simple. If you have any questions contact me. Also, if you like to support me consider shopping one of my designs:

How to remove snap and snap packages in Ubuntu

I needed to find how to remove snap and all those packages from my vintage Ubuntu laptop. It all started after trying to boot up and getting the ‘frozen’ Ubuntu logo at boot time. After brewing a nice Catimor coffee at home I discovered there was little storage space left. Why!?? My laptop was turned off for more than four months.

I got the below error when I was able to login using the recovery Terminal. I tried running apt update and got 'No space left on device'.

Then I ran sudo du -sh | sort -hr to find out what was taking storage space in Linux. I was surprised about what I found. WTF! is that ‘snap’ folder taking 8.5G!?

I had to take a walk by the nice waterfront in NYC before taking on this one. After I came back I found how to remove snap from Ubuntu. BTW, Snap or Snaps are self-contained apps bundling all libraries, and they keep old versions (revisions) for rollbacks by default. No good for my case!

How to remove snap completely from Ubuntu

I’m going to list the simple commands in order below. First, run the below snap command to view the snap packages installed in Ubuntu:

snap list -all

I did not find a way to remove all at once. So, you will need to remove them one by one. Using the below snap command:

sudo snap remove <package_name>

After you remove all snap packages stop the snap service:

sudo systemctl stop snapd

Then disable it:

sudo systemctl disable snapd

After ‘mask’ it to avoid it to get started by anything other service:

sudo systemctl mask snapd

Next, purge snapd:

sudo apt purge snapd -y

Then, mark on ‘hold’ it to avoid any future updates by the apt package manager:

sudo apt-mark hold snapd

Delete the snap package directories to re-claim disk space:

sudo rm -rf ~/snap/
sudo rm -rf /snap
sudo rm -rf /var/snap
sudo rm -rf /var/lib/snapd

Then, prevent snap from re-installing at all. Create a new file under

/etc/apt/preferences.d/nosnap.pref

Use your favorite text editor. I use vim. Add the below text to the file:

Package: snapd
Pin: release a=*
Pin-Priority: -10

Update the apt source list:

sudo apt update

That is all! Enjoy Ubuntu without snap. I suggest to install software using apt or from source.

Using the xargs command in Linux

I have been reviewing some useful commands in Linux during the holidays. Using the xargs command in Linux is one of them. Here are some sysadmin-style examples, simple and useful. Before, writing this I brewed coffee at home using my french press. Coffee inspires me.

The xargs command receives input from another command. In simple terms, it takes the output of one command and passes it as arguments to another command.

The logic behind the xargs command is:

stdin → xargs → command arguments

Delete many files safely using xargs

rm cannot handle huge lists from find. You can use the below find command and pass the arguments to the xargs command:

find /var/logs -name "*.log" | xargs rm -f
  • find outputs file names
  • xargs feeds them to rm
  • Files are removed (you need to be careful!)

If your files have spaces use this:

find /var/logs -name "*.log" -print0 | xargs -0 rm f
  • -print0 Handles unusual filenames: whitespaces, file name spaces or any other unusual characters.
  • xargs -0 → reads null-separated input

Check disk usage of many directories

ls /home/myusername/ | xargs -I{} du -sh /home/myusername/{}
  • Each directory becomes {}
  • du runs once per folder
  • Output stays readable

Restart services from a list

printf "nginx\nsshd\ncrond\n" | xargs systemctl restart
  • Each line becomes an argument
  • systemctl restarts all
  • One clean command

Other useful arguments used in xargs:

  • -n → limit arguments per command
  • -I{} → placeholder replacement
  • -0 → handle null-terminated input

sed command regex s/ option

The sed command is one of those commands I have never put enough attention in Linux. A mistake! The sed command (Stream Editor) is a very powerful one to know. It is used to find and replace text patterns.

Sed command standard sysntax

sed 's/pattern/replacement/flags' somefile

To replace all instances of Paco with Timo in a file.txt:

sed 's/Paco/Timo/g' file.txt
s/ - Substitute command.
g - Replaces all occurrences on a line, not just the first.
i - Ignore case.

sed is a Stream Editor. It reads text from an input (file or pipe) and sends the result to standard-output(your terminal screen). This is to safely prevent errors when making changes to files.

Write changes to a file using sed

You will need to use the -i flag. For example:

sed -i 's/Mary/Jenny/g' names.txt

The above will write changes/edit the file ‘in-place’ instead of displaying it on the screen only.

To prevent issues use the safety tips below:

sed -i.bak 's/Mary/Jenny/g' names.txt

The above will create a backup file named: names.txt.bak that you can use in case you made a mistake.

sed 's/Mary/Jenny/g' names.txt > new-names.txt

The above sed command will redirect the output of the command into a new file named new-names.txt. Very cool! Remember, DO NOT use the same file name.

After learning more about the this useful command I feel more comfortable and decided to brew a nice cup of Catimor coffee at home.

SystemV vs systemd Boot Order

Hola! I decided to put together this compare and contrast the boot order between SystemV and systemd. Contact me if you have any questions.

StageSystemV (SysVinit)systemd
Firmware startBIOS or UEFI loads bootloaderBIOS or UEFI loads bootloader
BootloaderGRUB loads kernel + initramfsGRUB loads kernel + initramfs
Kernel startKernel initializes hardwareKernel initializes hardware
First process/sbin/init (PID 1)/usr/lib/systemd/systemd (PID 1)
Config read/etc/inittabUnit files + generators
Default stateRunlevel (0–6)Target (multi-user.target)
Startup methodSequential shell scriptsParallel unit activation
OrderingNumeric prefixes (S10, S20)Dependency graph
Service location/etc/init.d//usr/lib/systemd/system/
Runlevel dirs/etc/rc.d/rc*.d//etc/systemd/system/
Dependency handlingManual, fragileAutomatic, strong
Boot speedSlowerFaster
Loggingsyslogjournal
Status trackingLimitedFull state tracking

Remember to stay strong and keep brewing great coffee at home!