Posted on Leave a comment

Tech Upgrades to Boost Business Productivity and Save Money

Tech Upgrades to Boost Business Productivity and Save Money

Taking advantage of modern technology is important for keeping your business competitive. However, many business owners are hesitant to spend money on the latest tech. What if your investment doesn’t pay off? As a small business owner, you can’t afford to waste capital on fancy new tools and equipment just for the sake of being innovative. Your tech investments need to save you enough money that they pay for themselves in the long run. 

The good news is that there are several tools out there that can do just that! You just have to know where to look—and how to pick the right technology for your unique business needs. Are you ready to invest in some new technology and take your business to the next level? Here are a few tools that are bound to pay off!

Project Management Software

Project management tools can make your life a lot easier. Even if you have a small team, good project management software will help you stay on schedule, optimize the use of your available resources, and monitor progress from one centralized platform. This will save you the headache of constant back-and-forth emails and enable your team to get work done more quickly. Look for project management software that allows you to collaborate in real-time with your team members. 

Meeting Scheduling Platforms

Scheduling meetings with team members and clients is another common business task that can take a lot of unnecessary time. How many emails do you have to send before you land at a meeting time that works for everyone? According to Boomerang, it takes an average of 8 emails to schedule a single meeting! Instead, take advantage of meeting scheduling apps and tools. For example, Calendly lets people schedule meetings based on their availability, which is ideal for business owners who get a lot of meeting requests.

Accounting Apps

Accounting is yet another one of those administrative tasks that take a lot of time. And when you don’t know what you’re doing, accounting mistakes can wind up costing a lot of money! Take advantage of accounting software to save time and keep more money in your business. With accounting software for your SMB, you will be able to automate a lot of your accounting processes so you can spend less time calculating taxes and more time focusing on big-picture projects. You’ll also be able to track expenses and inventory and send electronic invoices to get paid faster.

Email Marketing Software

If you collect emails from your customers—and you should—email marketing software will help you extract the most value out of your list. Email marketing tools make it easy to store, organize, and segment your audience so you can promote your business more effectively. At the same time, you’ll be able to use your email tools to schedule automatic abandoned cart emails and drip campaigns to improve your customer conversions!

Social Media Scheduling Tools

Posting on social media and engaging with your followers is one of the most affordable ways to advertise your business. But staying on top of your social media marketing tasks can be challenging. Thankfully, there are many social media management tools that allow you to create and schedule posts in advance. These social tools also make it easier for team members to respond to customers on social media from one easy-to-use platform.

The right technology can make your small business much more productive. Tech tools will help you automate time-consuming tasks, avoid common human errors, manage your finances, and save money across all areas of your business. Start exploring small business tech tools today so you can catch up with your competitors!

Work with software entrepreneur Jyrone Parker to take your business to the next level!

Posted on Leave a comment

Upgrading The Discord Twitter Bot To Use V2 API

close up photo of toy bot

Twitter Upgraded Their API & Broke My Bot!!

Imagine my frustration when I get dozens of DMs, emails, and other messages asking when I was going to upgrade my Discord Twitter bot to be compliant with the latest Twitter changes. Like damn bro, I have other things to do lol but alas I can’t let my peeps down. In this blog entry, I will show you what I did to upgrade my codebase to use the Twitter V2 API to communicate with the Discord server to send out my tweets.

v2 of the Discord Twitter bot

Upgrading The Package.json File

We are no longer using the Twit npm package and instead using the twitter-v2 npm package. Open your package.json file and change it to the following:

{
  "name": "discord-twitter-bot",
  "version": "1.0.0",
  "description": "A discord bot that sends messages to a channel whenever a specific user tweets.",
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/mastashake08/discord-twitter-bot.git"
  },
  "keywords": [
    "discord",
    "twitter",
    "bot"
  ],
  "author": "mastashake08",
  "license": "ISC",
  "bugs": {
    "url": "https://github.com/mastashake08/discord-twitter-bot/issues"
  },
  "homepage": "https://github.com/mastashake08/discord-twitter-bot#readme",
  "dependencies": {
    "discord.js": "^13.8.1",
    "dotenv": "^8.2.0",
    "twitter-v2": "^1.1.0"
  },
  "engines" : {
    "npm" : ">=7.0.0",
    "node" : ">=16.0.0"
  }
}

Changes To The Twitter API

In order to use the stream API, we have to set up stream rules. We want to only show tweets from yourself so in your .env file add a new field

TWITTER_USER_NAME=

Afterward, we listen to the stream pretty much as before. Open up the main.js file and update it to the following.

require('dotenv').config()
const Twit = require('twitter-v2')
const { Client } = require('discord.js');
const client = new Client({ intents: 2048 });


var T = new Twit({
  // consumer_key:         process.env.TWITTER_CONSUMER_KEY,
  // consumer_secret:      process.env.TWITTER_CONSUMER_SECRET,
  // access_token_key:         process.env.TWITTER_ACCESS_TOKEN,
  // access_token_secret:  process.env.TWITTER_ACCESS_TOKEN_SECRET,
  // timeout_ms:           60*1000,  // optional HTTP request timeout to apply to all requests.
  // strictSSL:            true,     // optional - requires SSL certificates to be valid.
  bearer_token:  process.env.BEARER_TOKEN
})

//   //only show owner tweets
async function sendMessage (tweet, client){
  const url = "https://twitter.com/user/status/" + tweet.id;
  try {
    const channel = await client.channels.fetch(process.env.DISCORD_CHANNEL_ID)
    channel.send(url)
  } catch (error) {
        console.error(error);
  }
}

async function listenForever(streamFactory, dataConsumer) {
  try {
    for await (const { data } of streamFactory()) {
      dataConsumer(data);
    }
    // The stream has been closed by Twitter. It is usually safe to reconnect.
    console.log('Stream disconnected healthily. Reconnecting.');
    listenForever(streamFactory, dataConsumer);
  } catch (error) {
    // An error occurred so we reconnect to the stream. Note that we should
    // probably have retry logic here to prevent reconnection after a number of
    // closely timed failures (may indicate a problem that is not downstream).
    console.warn('Stream disconnected with error. Retrying.', error);
    listenForever(streamFactory, dataConsumer);
  }
}

async function  setup () {
  const endpointParameters = {
      'tweet.fields': [ 'author_id', 'conversation_id' ],
      'expansions': [ 'author_id', 'referenced_tweets.id' ],
      'media.fields': [ 'url' ]
  }
  try {
    console.log('Setting up Twitter....')
    const body = {
      "add": [
        {"value": "from:"+ process.env.TWITTER_USER_NAME, "tag": "from Me!!"}
      ]
    }
    const r = await T.post("tweets/search/stream/rules", body);
    console.log(r);

  } catch (err) {
    console.log(err)
  }

  listenForever(
    () => T.stream('tweets/search/stream', endpointParameters),
    (data) => sendMessage(data, client)
  );
}
// Add above rule

client.login(process.env.DISCORD_TOKEN)
 client.on('ready', () => {
   console.log('Discord ready')
   setup()

 })

Congrats, It’s Updated!

That’s pretty much all we had to do to update everything to use the new API. The added benefit is that it won’t show retweets in your discord server like before :0 if you enjoyed this consider becoming a patron on Patreon and help fund in-person coding classes for kids in Louisville, KY!

Posted on Leave a comment

Today I Began Teaching My Kids How To Code

Those of you who have been following my content creation journey since the beginning may remember my children being on my live streams.  They are finally learning how to code this summer by making video games! Follow us over the next couple of months as we make VR games using the Babylon.js framework.

Patrons get behind-the-scenes access to the source code and special content as I teach these two mini geniuses. I continue to thank you all who have supported me, the channel, and the kid coding community.

So what is Babylon.js? It is an amazing Javascript 3D video game framework that uses WebXR and WebGPU technologies to enable us to make web games for the Oculus Quest! Ethan and Moriah will be creating VR dinosaur and unicorn Oculus games this summer. I really hope that if you have kids or know of kids who want to code this summer please have them subscribe to my Youtube channel and check the channel Monday – Friday this summer and participate in the live stream! All you need is a code editor and a web browser!

I created a repository on Github for the adventures you can follow along at https://github.com/mastashake08/dinosaur-unicorn-babylon-vr please feel free to fork and see the daily code updates!

Posted on Leave a comment

Teaching Your Employees to Recognize and Avoid Common Internet Scams 

woman holding macbook

Teaching Your Employees to Recognize and Avoid Common Internet Scams

An informed workforce is your best defense against cyberattacks. Every time your employees go online, whether to check their email or conduct a search, they could encounter internet scams that put your business at risk. Cybercriminals like to target employees, especially those with access to sensitive financial information. Because your employees are your first line of defense against threats, you must empower them to protect your company!

Here are some tips presented by JyroneParker.com to help you teach your employees to avoid common cybersecurity threats. 

Start with a Recovery Plan

Every business needs a cybersecurity disaster recovery plan. Employee education and vigilance aren’t always enough to prevent cybercriminals from bypassing your defenses. Don’t wait for a disaster to happen to formulate a recovery plan! If your business experiences a cyber-attack, your recovery plan will enable you to get back up and running as quickly as possible so you can avoid angering your customers or disrupting your cash flow. When it comes to planning for potential cyber security threats, be sure to identify which data you will need to recover first in the event of an attack. This way, you’ll be able to put together a recovery plan that will help restore trust among your clients and customers.

Of course, creating a disaster recovery plan is no mean feat. With the level of detail, research, and strategizing that goes into it, you’ll definitely find your hands full. If you find yourself needing to reshuffle your work tasks to get this vital measure in place, you’ll need to find ways to organize your time differently. Download a planner template and use visual elements like sticky notes to keep you on track without taking much away from your other tasks.

Phishing Attacks

Phishing attacks are some of the most common internet scams. In a phishing scam, an attacker tricks their victim into clicking a link or downloading a file, resulting in any manner of damaging attacks. These attacks usually occur over email, but social media, instant messaging services, and apps are also frequently used in phishing attempts. Phishing emails often look like they’ve been sent by a company you know, so it’s important to know how to identify them.

Trojan Horse Software

Trojan horse software is a malicious program that appears legitimate but can take control of your computer after being downloaded. Trojans can do different things, from stealing sensitive information to freezing important data. Make sure your employees know not to click on pop-up windows, download programs from unknown publishers or click links in emails from people they don’t recognize. 

Tech Support Scams

The Federal Trade Commission explains that tech support scammers will lead you to believe that there’s something wrong with your computer and you will have to pay for tech support services to fix the issue. These scams often appear as pop-up warnings that look like error messages on your computer. Show your employees some examples of these scam attempts so they know what to look out for when working online.

Public Wi-Fi Scams

If your employees work remotely some or part of the time, make sure they know how to avoid public Wi-Fi scams. In public places, like coffee shops or airports, scammers may set up Wi-Fi networks with a name similar to one you would expect. Once you connect to this network, the hacker can steal your passwords, scan emails, or otherwise access your sensitive data. Discourage your employees from using public Wi-Fi for sensitive business tasks, like accessing business bank accounts or making purchases. You may also want to provide your employees with a VPN service to encrypt their connections and make public Wi-Fi safer.

Commit to Regular Cybersecurity Training

Teaching your employees how to avoid internet scams should be an ongoing process. Hackers are getting increasingly skilled and attacks are becoming more sophisticated by the day. Protect your business from these ever-evolving threats by committing to regular employee education. Make cybersecurity a common topic to address in team meetings so you can remind your employees how they can best protect themselves and your company from threats. Importantly, ensure your cybersecurity messages are understandable and relatable. You want your employees to feel responsible for their stake in your company’s security plan.

Cybersecurity is an important topic that’s often overlooked by small business owners. Even if you did everything in your power to shield your business from online threats, your employees still create points of vulnerability. Commit to cybersecurity training so your employees know how to reduce their risk of falling for internet scams.

Posted on Leave a comment

Adding Google Drive Functionality To Screen Recorder Pro

You All Requested Google Drive Functionality!

In my last YouTube video, I was asked to implement Google Drive upload functionality for saving screen recordings. I thought this was a marvelous idea and immediately got to work! We already added OAuth login via Google and Laravel in the last tutorial to interact with the Youtube Data v3 API, so with a few simple backend tweaks, we can add Google Drive as well!

Steps To Accomplish

The functionality I want to add to this is going to be just uploading to Google Drive, with no editing or listing. Keep things simple! This is going to require the following steps

  • Adding Google Drive scopes to Laravel Socialite
  • Create a function to upload file to Google API endpoint

Pretty easy if I do say so myself. Let’s get started with the backend.

Adding Google Drive Scopes To Laravel Socialite

We already added scopes for YouTube in the last tutorial so thankfully not a whole lot of work is needed to add Google Drive scopes. Open up your routes/api.php file and update the scopes array to include the new scopes needed to interact with Google Drive

Route::get('/login/youtube', function (Request $request) {
  return Socialite::driver('youtube')->scopes(['https://www.googleapis.com/auth/youtube', 'https://www.googleapis.com/auth/youtube.upload', 'https://www.googleapis.com/auth/youtube.readonly', 'https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/drive.metadata', 'https://www.googleapis.com/auth/drive.metadata.readonly'])->stateless()->redirect();
});

Make sure you enable the API in the Google cloud console! Now we head over to the frontend Vue application and let’s add our markup and functions.

Open the Home.vue and we are going to add a button in our list of actions for uploading to Google Drive

<t-button v-on:click="uploadToDrive" v-if="uploadReady" class="ml-10">Upload To Drive 🗄️</t-button>
    

In the methods add a function called uploadToDrive() inside put the following

  async uploadToDrive () {
      let metadata = {
          'name': 'Screen Recorder Pro - ' + new Date(), // Filename at Google Drive
          'mimeType': 'application/zip', // mimeType at Google Drive
      }
      let form = new FormData();
      form.append('metadata', new Blob([JSON.stringify(metadata)], {type: 'application/json'}));
      form.append('file', this.file);
      await fetch('https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart', {
        method: 'POST', // *GET, POST, PUT, DELETE, etc.
        mode: 'cors', // no-cors, *cors, same-origin
        cache: 'no-cache',
        headers: {
          'Content-Length': this.file.length,
          Authorization: `Bearer ${this.yt_token}`
        },
        body: form
      })
      alert('Video uploaded to Google Drive!')
    }

Inside this function we create an HTTP POST request to the Google Drive endpoint for uploading files. We pass a FormData object that contains some metadata about the object and the actual file itself. After the file is uploaded the user is alerted that their video is stored!

Screen Recorder Pro Google Drive upload confirmation

What’s Next?

Next, we will add cloud storage you will be able to share with Amazon S3 and WebShare API! Finally we will add monetization and this project will be wrapped up! If you enjoyed this please give the app a try at https://recorder.jcompsolu.com

Posted on Leave a comment

Finding An App Niche: On Screen Recorder Pro

It All Started Because I Needed A Screen Recorder

I do screen records all the time for my business J Computer Solutions LLC, especially in today’s remote work environment it is often the only way I can efficiently send my clients’ demos! I usually have to go through the same tedious process to get work done.

  • Open QuickTime
  • Record screen capture
  • Save file
  • Open up email
  • Upload file
  • Send to client

I eventually got very bored of it and wrote a progressive web app called Screen Recorder Pro to simplify the process and make it easier. Using the MediaRecorder API I capture the screen, save the output as a webm video file and from there I can take one of the following actions:

  • Share direct link with client
  • Download the file
  • Email the file
  • Upload the file to Google Drive
  • Upload the file to YouTube
Screen Recorder Pro in action

This was saving me precious time in getting work done as well as feedback. I started to ponder on how useful this would be for other users and decided to package it up. This PWA can be used on any Windows, Mac OSX or Linux desktop computer (mobile does not support MediaRecorder yet). I monetized the web app with Google Adsense and put it out to the world. To my surprise, it has gotten very positive feedback processing gigabytes worth of video data so far! This blog post isn’t so much about a screen recording software as it is about creating niche products of value.

Solve One Problem At A Time

I have been saying this ever since my first days of making app revenue. The apps that make the most money tend to be the simpliest. They solve one problem and solve that problem very well. It’s the Unix philosophy at scale! Also if you are struggling with coming up with a concept, create an app that solves a PERSONAL problem for you first! Chances are if it solved a problem for you, then there are 1000s of other people whose problems you just solved as well! Once you find that pain point and solve it, you can monetize. From there iterate and create more features that solve more problems in that realm. In regards to Screen Recorder Pro, the next features I plan on adding is the ability to stream to YouTube and Twitch directly in the browser. No need for any downloads, I have given streamers the ability to set up anywhere and get to work! I plan on keeping this web app free monetized with ads. I don’t believe people should have to pay service fees monthly for the vast majority of software (but that’s another blog article entirely). Due to the nature of the app, it’s feasible to believe there will be enough screen time on the app where I don’t have to monetize in other ways but we will see. Do me a favor and check out Screen Recorder Pro and while you are at it cop some #CodeLife swag!