Must-Have Tech Tools for Solopreneurs, Freelancers, and Small Business Owners

Image via Pexels

If you’re a solopreneur, freelancer, or small business owner, you may be hesitant to invest in technology, thinking that you’d rather keep your overhead costs low. However, buying the right tech tools can help you save time, stress, and—in the big picture—money at work. This guide explains where it’s worth putting your money.

Tech to Streamline Operations

More efficient business operations mean less waste and greater profits. Here are some technologies to enhance your work processes.

  • Project management tools help everyone in your team stay on top of deadlines. If you’re a solopreneur, they make it easy to track deliverables for clients.
  • Communication tools allow you to keep up with clients and workers alike.
  • API tools with microservice architecture can help your business stay secure and scalable.
  • Automation tools like Zapier and IFTTT help to save valuable hours.

Tools to Improve Your Financials

Maintaining control of money matters is a must for any business. These tools can help.

  • Accounting tools simplify your bookkeeping and tax filing processes.
  • Mobile apps help you manage your business finances when you’re on the go.
  • Cloud storage makes it easy to keep your digital documents organized.
  • The best invoice template makes it fast and easy to get the cash you’re due.

Technology to Keep Customers Happy

Your business relies on happy customers to survive. These tools can help keep them satisfied.

  • A great website manager allows you to maintain your online platform, which customers can consult for basic information.
  • Customer service solutions like Freshdesk and Zendesk allow you to meet customer needs and answer their questions.
  • Payment solutions like Authorize.net and Chargebee allow you to give customers varied payment options, enhancing convenience.
  • Customer feedback tools allow you to pinpoint where you can improve your customer service.

It might seem like investing in technology is a waste of money. After all, it will drive up your overhead costs, cutting into your profits. In fact, these kinds of tools can save you stress, time, and manpower—ultimately saving you money too.

How to create a subdomain?

If you’ve already bought a domain, and don’t want to purchase another for your sub-site, then you can create a sub-domain for your website. It can be a whole different website for which you can give the hyperlink on your main website.

Generally, the domain providers have an option to configure the sub-domain under the domain settings in the cPanel and we need to create A record there.

If you have a VPS or dedicated Server with a Public IP, the configure the IP value of the A record with the Public IP of the Server. So you need to provide following values:

Type: A record

Host: e.g. if your domain is mywebsite.com then put host as blog. So your subsite domain will be blog.mywebsite.com.

Value: Put the Public IP of the VPS or dedicated Server.

TTL: The TTL serves to tell the recursive server or local resolver how long it should keep said record in its cache. Usually, the recommended default is 1 hour but you can change as per your requirement.

Various domain providers like godaddy.com, cloudflare etc. have this kind of interface to point your subdomain to an IP address.

Recognizing Red Flags: Preventing Computer Scams and How Employees Can Help

Image via Pixabay

If you’re skeptical that your business could be infiltrated by internet scammers, consider that the Federal Trade Commission received reports of fraud from 2.2 million Americans in 2020 and that people in 20 countries lost $172 billion in 2017 to hackers, including consumers of all ages. Scammers keep getting more inventive and elusive, constantly adapting to upgrades in computer security and the vigilance of people in the commercial and consumer sectors. Like good con men, scammers prey on human greed and fear, and a momentary lapse of attention can prove disastrous. Here are a few of the more common scams to watch out for.

Phishing

Phishing scams are among the most common cyber attacks that businesses face today; it’s the third-most-common form of internet-based crime, according to the FBI. Phishing scams come in the form of emails that appear legitimate, perhaps disguised as a communication from Apple, Amazon, PayPal, or Microsoft indicating there’s a problem with your account and encouraging you to click on a link, or luring you with the promise of a purchase refund or discount. Following their link can give scammers access to your login information. 

Ransomware

Ransomware is another tricky scam that entices victims to double-click on an email attachment or download an attached file, which delivers a virus or malware that locks up your PC and encrypts your files. This is generally followed by a message that if you’ll pay a specific amount of money (usually demanded in Bitcoin so they can’t be traced by conventional means), the perpetrators will unlock/decrypt your files. Your best guard against this fast-growing scam is right out of computer security 101—set up a continuous backup system and always accept Microsoft security protection updates. These “click here” scams are always dangerous: All it takes is a click of the mouse by a distracted employee and you’ve got a security problem that can be time-consuming and costly to counteract.

Email from the Boss

Most of us are hard-wired to respond promptly and obediently when we receive an email from a supervisor or high-ranking company official. It’s a knee-jerk reaction, and that’s what the inventors of a rapidly growing scam are counting on. Targets receive an email from someone pretending to be “the boss,” who claims to need money wired to him to deal with a business emergency while he’s on the road. These tend to be carefully targeted emails and are difficult for spam filters to weed out, so make sure staff knows that no company official would ever make such a request (without going through the chain of command), and that they’re to bring it to the attention of management and IT immediately. Also, it’s not a bad idea to fine-tune your money transfer security to make sure a situation like this doesn’t occur.

Digital Forensics

A data breach can happen in a matter of seconds and do a great deal of damage before anyone knows what’s happened. It’s important to have cybersecurity technology in place to help locate the source of the problem and put a stop to it. However, there’s more to it, as digital forensic specialists can also preserve and recover your valuable data and analyze the situation so that further breaches can be avoided. Your cyber threat recovery plan should identify what data you need to recover first, define objectives, and specify which staff will be responsible for your recovery efforts.

Employee Training

Employees are your first line of defense against computer scams, so it’s important that they know what to watch for. One of the best ways to guard against attacks is to teach them to recognize any red flags, such as emails that contain impersonal greetings, grammar or style errors, and warnings that “immediate action” is required. Your company’s computer security protocol should ensure that any suspected attack is reported to the IT department in a timely manner. Advise staff to communicate with co-workers if they identify a scam to prevent others from being victimized, and staff should be prohibited from sharing passwords or other sensitive data via email.  

These days, companies rise and fall based on the extent, quality, and security of their data. That’s why it’s so vital that employees understand the threat that scams present, know how to recognize the signs and act accordingly to prevent catastrophic infiltrations. Establishing a clear protocol for staff members is one of the best ways to get everyone thinking in terms of computer security.

This article is brought to you by InTheTechPit. For more information, please contact us today!

To Survive, Small Businesses Need to Invest in 5 Tech Tools

A business’s ability to leverage technology and get ahead is one of the keys to its success.
However, small businesses assume that their budgets have to be big to reap the benefits.
But that’s not true. There’s a sizable industry geared toward helping smaller businesses
reap the benefits of innovation at affordable prices.

Why You Should Invest in Tech

Time is money, and if you’re able to save more time while increasing your profits, that’s a
good reason to invest in that kind of leverage. Some types of easily accessible technology
that benefit  businesses include:

  • Business process automation. BPA is one of the most important ways for businesses to reap benefits. Repetitive tasks consume valuable time and automating them frees up the staff’s time to pursue more profitable directions. Because of that, 66% of organizations are moving towards automating at least one business process. 
  • Managing customer experience. If you want more satisfied customers and a fatter bottom line, then you need to improve your customer’s experience. Managing customer experience is a top priority for 45% of companies. Half of the top performers regularly invest in designing user journeys that are seamless and clear.
  • Tracking and monitoring. By getting a handle on strategic metrics, you can keep an eye on your business’s overall health. Knowing how your finances are doing or what customers want and don’t want makes your business more nimble.

Technology Small Businesses Need

Customer Relationship Management Software

When you’re able to monitor and understand customer behavior, you can tailor each buyer’s journey for profit and value. CRM software tools help businesses stay at the top of the minds of their customers.

Data Backup

When things go wrong, having a solid data backup reduces downtime and business loss. The good news is that 86% of businesses do regular backups, However, three out of five backups are incomplete. In addition to backing up your data, test your system regularly to ensure it’s complete.

Password Management 

Web security is more important now that cyberattacks are on the rise. Part of the way to protect your site and business is to automate the process of password management. This includes setting policies about the strength of the password and how often they need to be changed.

Accounting Software

Accounting software is like having an accountant or bookkeeper ready. Not only will it keep track of your cash flow and expenditures, but it can also remind you of when you need to file certain taxes. Features like this improve tax compliance which saves companies money. 

Email Marketing

Many businesses turn away from email marketing, thinking that it’s on the way out. On average, email marketing returns about $42 for every dollar spent. A well-curated customer email list is money in the bank. These are the people your business can rely on to build your brand as both buyers and advocates.

Tailor Your Own Technology Solution

There are many technology solutions available to help your business stay competitive and profitable. Focus on which ones suit your primary business goals and work your way from there. 

Get useful code snippets you can use for SQL, Azure, and more at IntheTechPit.

Image via Pexels

List SQL Server Objects

To list out all Databases in SQL Server run the following query under master:

SELECT name FROM master.dbo.sysdatabases

To list out all SQL Server Jobs with Job Owner details use:

SELECT s.name AS JobName, l.name AS JobOwner
FROM msdb..sysjobs s
LEFT JOIN master.sys.syslogins l ON s.owner_sid = l.sid
WHERE l.name IS NOT NULL
ORDER by l.name

To list out all SQL Server Logins use:

select sp.name as login,
       sp.type_desc as login_type,
       sl.password_hash,
       sp.create_date,
       sp.modify_date,
       case when sp.is_disabled = 1 then 'Disabled'
            else 'Enabled' end as status
from sys.server_principals sp
left join sys.sql_logins sl
          on sp.principal_id = sl.principal_id
where sp.type not in ('G', 'R')
order by sp.name;

To list out all Linked Servers:

select sp.name as login,
       sp.type_desc as login_type,
       sl.password_hash,
       sp.create_date,
       sp.modify_date,
       case when sp.is_disabled = 1 then 'Disabled'
            else 'Enabled' end as status
from sys.server_principals sp
left join sys.sql_logins sl
          on sp.principal_id = sl.principal_id
where sp.type not in ('G', 'R')
order by sp.name;

List all tables with column details SQL Server

The below query can be run in a database on SQL Server to list all tables with column details.

SELECT schema_name(tab.schema_id) as schema_name,
    tab.name as table_name, 
    col.column_id,
    col.name as column_name, 
    t.name as data_type,    
    col.max_length,
    col.precision
FROM sys.tables as tab
    INNER JOIN sys.columns as col
        on tab.object_id = col.object_id
    LEFT JOIN sys.types as t
    on col.user_type_id = t.user_type_id
ORDER BY schema_name,
    table_name, 
    column_id;

Cannot access files with Umlauts in virtual directory IIS

In case you have a file in the virtual directory with filename containing non-English characters like Umlauts e.g. ö. When we try to access the path with it is becomes inaccessible, but the files with only English characters are accessible.

You can try the following IIS settings, first one is

Request Filtering:

  1. Open the iis, double click the ‘Request Filtering’ icon
  2. In the ‘File Name Extension’ right click->Edit Feature Settings…’ the file ‘web.config’
  3. Check the option ‘Allow double escaping’ (this option is unchecked by default)
  4. Repeat all above 3 steps for the ‘default website’ (or whatever you have given the name to your site)
  5. Re-start IIS.

UrlScan under ISAPI:

One of the possible causes could be you’re using UrlScan extension for IIS which is visible under ISAPI filters. It is applied to all sites by default. In our case, removing UrlScan for the site facing issue resolved the issue.

Use jQuery UI dialog yes no

For this example, I’m using jQuery version 3.2.1. The javascript method popupConfirm() can be called on the click of a button event or onchange event of a drop-down. The no-close class is to remove the x button from top-right of the dialog box.

< link href="../Scripts/jquery-ui.css" rel="stylesheet" />
< script src="../Scripts/jquery.js"></script>
< script src="../Scripts/jquery-ui.js"></script>
< style>
	.no-close .ui-dialog-titlebar-close{
		display: none;
	}
< /style>
<script language="JavaScript">   
    $(document).ready(function () {
        $("#dialog").dialog({
            autoOpen: false,
            modal: true,
            width: 400
        });
    });

    function popupConfirm() {
        $("#dialog").dialog({
			buttons: {
				"Yes": function () {
					$("#message").text('You clicked Yes');
					$(this).dialog("close");
				},
				"No": function () {
					$("#message").text('You clicked No');
					$(this).dialog("close");
				}
			},
			dialogClass: "no-close"
		});

		$("#dialog").dialog("open");
    }
</script>

Use the following html for the dialog and message as below.

< div id="dialog" title="Confirmation Required" >
  Are you sure?
< /div >
< div id="message" style="color: red;" >

< /div >

Use onchange method of a drop-down e.g.

< select name = 'types' size='1' onchange='popupConfirm();'> < /select> 

Call .Net core API from Console with App Bearer token

In the following example, we’re using a .Net Core 3.1 Console App that will call API with POST request that requires Authentication with a bearer token in Authrorization Header. The token is generated by passing credentials to another API endpoint.

For more details on how to use appSettings.json file in Console App, check this post.

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;

namespace ConsoleApp1
{

    class Credentials
    {
        public string username { get; set; }
        public string password { get; set; }
    }

    class Token
    {
        public string token { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            string ResponseString = "";
            HttpWebResponse response = null;
            HttpWebResponse response2 = null;
            IConfiguration Config = new ConfigurationBuilder()
                .AddJsonFile("appSettings.json")
                .Build();

            try
            {
                var baseURL = Config.GetSection("baseURL").Value;
                var request = (HttpWebRequest)WebRequest.Create(baseURL + "/token");
                request.Accept = "application/json"; //"application/xml";
                request.Method = "POST";

		//Get credentials from config.
                var dusername = EncryptionService.Decrypt(Config.GetSection("credentials")["username"]);
                var dpassword = EncryptionService.Decrypt(Config.GetSection("credentials")["password"]);

                Credentials cred = new Credentials()
                {
                    username = dusername,
                    password = dpassword
                };

                var myContent = JsonConvert.SerializeObject(cred);

                var data = Encoding.ASCII.GetBytes(myContent);

                request.ContentType = "application/json";
                request.ContentLength = data.Length;

                using (var stream = request.GetRequestStream())
                {
                    stream.Write(data, 0, data.Length);
                }

                using (response = (HttpWebResponse)request.GetResponse())
                {
                    ResponseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
                }

		//Get the token from the /token end-point and call another end-point.
                Token token = JsonConvert.DeserializeObject<Token>(ResponseString);

                var request2 = (HttpWebRequest)WebRequest.Create(baseURL + "/ProcessData");
                request2.Accept = "application/json"; //"application/xml";
                request2.Method = "POST";
				
		//Pass token in Authorization Header.
                request2.Headers["Authorization"] = "Bearer " + token.token;

                using (response2 = (HttpWebResponse)request2.GetResponse())
                {
                    ResponseString = new StreamReader(response2.GetResponseStream()).ReadToEnd();
                }

                Console.WriteLine(ResponseString);
                Environment.Exit(0);
            }
            catch (WebException ex)
            {
                if (ex.Status == WebExceptionStatus.ProtocolError)
                {
                    response = (HttpWebResponse)ex.Response;
                    ResponseString = "Some error occured: " + response.StatusCode.ToString();
                }
                else
                {
                    ResponseString = "Some error occured: " + ex.Status.ToString();
                }
            }

        }
    }

}