Software Development

First-hand Lessons in Latency

Internet infrastructure in downtown Bangkok

Recently I was on-site at an office in Bangkok, Thailand to help on-board a client’s client onto a SAAS application hosted in a Microsoft Azure data center in the US. The application (Angular) was very slow to load the home page, but behaved normally after the initial delay. We quickly realized we had latency issues. I wasn’t surprised that we had issues but I was surprised at the magnitude of them.

It’s a large Angular application. The main JavaScript file is 6.8 MB. It was taking about a minute to download that file to each computer. As a quick test, we set up a replica in Azure’s Southeast Asia region (Singapore) and the download time was under 4 seconds. (Thanks to the magic of cloud computing – this only took about two hours.)

We had tested the application from a virtual machine in the Azure Southeast Asia region, but that wasn’t a good test (since computers inside the Azure data center have very fast Internet speeds). Seeing the actual difference in download times in a “real-world scenario” was enlightening.

Download comparison times

Client locationWeb server locationDownload time (in seconds) for 6.8 MB file
Bangkok officeUS (Azure US East)59.11
Bangkok officeSingapore (Azure Southeast Asia)3.62
VM in Singapore (Azure Southeast Asia)US (Azure US East)2.76
Birmingham, AL officeUS (Azure US East)4.84

If you have a web application that’s going to be used around the world, you need to take advantage of the global cloud. You definitely need to consider using Content Delivery Networks (CDNs) to replicate your static content around the world. Depending on your application’s architecture, you might need to have web servers spread in Azure or AWS data centers around the world.

If you have questions or would like help with this, please reach out to us.


Technicality is changing to Circlebox

Technicality Transition

We are in the process of re-branding. For several years, Circlebox has been a product owned and operated by Technicality LLC.

We are in the process of renaming Technicality LLC to Circlebox LLC to unify our branding. All applications, websites, and email domains will be transitioned to

During the transition, we are operating as Technicality LLC dba Circlebox.

Welcome to Circlebox!


Microsoft 365 Shared Mailboxes

The best way to handle a former employee’s email

One of the more frequent requests that comes into our support desk is something like “John Doe is no longer working here. Ann Jones needs access to his mailbox until we hire a replacement.” You could just change John’s account email and give it to Ann, but what if multiple people need access to John’s email. With multi-factor authentication (MFA) – it’s harder to share passwords. (If you’re not using MFA – you should be.)

Microsoft 365 includes a feature called Shared Mailboxes that is perfect for this scenario. You convert the former employee’s mailbox to a shared mailbox and give access to any employees that need it.

Navigate to (you have to be an Admin to do this) and find the former employee in the Mailboxes list on the left side menu (under Recipients). When you select the mailbox, there is an option to “Convert to shared mailbox”. Click this option and confirm. Once this conversion is done, this mailbox will still show in this list, but with a Recipient Type of “SharedMailbox”.

Once the conversion is done, you can grant access to other users using the “Manage mailbox delegation” option. You can decide if they only need to read messages or if they need the ability to “Send As” the former employee.

That’s it. The best part is – you’ve just freed up a license because the Shared Mailbox doesn’t require a license, only the users who you grant access to (who should already have licenses).

If the users you granted access to are using Outlook, the shared mailbox should show up in the bottom left corner of Outlook automatically within a minute or so. If they are using Outlook Web, they can click on the circle in the top right corner with their picture or initials and choose “Open another mailbox” and enter the former employee’s email address.

If you’d like help with this or anything else related to Microsoft 365, visit us here.


Use Microsoft Teams as a PBX

If you’re the owner of a small start-up company, you’ve been forced to decide “Do I need a business telephone number or do I just give everyone my cell number?”

For many small companies, the cost of a phone system (PBX) and phone service is hard to justify given how often it will be used. In addition to the cost, many VOIP handsets get their power from a special POE (“Power over Ethernet”) switch that you have at your office, but your remote employees probably don’t have at home. Firewall and VPN issues can add to the complexity.

Many companies are already using Microsoft Teams for internal communications, but – did you know you can link it to the phone network and make and receive phone calls?

For about $20/user/month in licensing fees (in addition to your existing Microsoft 365/Teams license fees), you can add Phone System to your Microsoft Teams environment.

As a pilot project, we just set this up internally at Technicality. We had been using Grasshopper as our “business phone”, but I didn’t like the fact that if someone called the business phone number, it was forwarded to my cell phone and I couldn’t tell if it was a business call or a personal call.

We ported our main number from Grasshopper and have set up an automated attendant (“For sales, press 1. For tech support, press 2…”) to answer calls to the main number. Each licensed Teams user now has their own direct dial (DID) number, so we can give out our direct number or have people call the main number and be transferred to us via the auto attendant.

Incoming calls can be answered on your computer (in the Teams client) or on your mobile phone (in the Teams app). The incoming Caller ID number shows up in the Teams app, so you can tell that you’re receiving a business call via Teams (as opposed to someone dialing your cell number).

Voicemail is included for each licensed user and incoming calls can automatically be sent to voicemail based on your Teams status. Teams automatically transcribes the voicemail message and you can see it in your Teams client or app.

I especially like the fact that you can type a script (for the automated attendant message or for your voicemail message) and Teams will create a “human sounding” voice message (as opposed to having to record and upload the file). If you want to hear what it sounds like – call 205.208.9050. The recording you hear was automatically generated from a typed script.

This isn’t a great solution for everyone. If you really need a physical phone, you can do that with Teams but it’s more complicated/expensive. But – if you’re a small, remote startup and already pretty comfortable with Teams, this may be worth a try to have a “business phone system” without additional phone equipment.

If you have questions or would like help with setting this up, you can call us at the number above, or book a time to discuss (complimentary) on our website.

And – you can quit giving out your cell number.