Blog Graphic
back in November of 2021

Import Faker

Faker is a useful Python package that generates fake data. There's no need to include lots of external text files to generate random data.

#!/usr/local/bin/python3
from faker import Faker
from faker.providers import currency
fake = Faker()
fake.add_provider(currency)
Faker.seed()
for _ in range(10):
	print(fake.pricetag())

Sample Output

$7,604.87
$975.93
$54.21
$89,241.15
$91,565.93
$1,784.08
$6.09
$4,535.13
$22.87
$5.87

Need Same Results?

If you are writing Unit Tests, you may want to have the same list generated. To do this, simply add a value to the seed().

# Keep the same data output:
Faker.seed(10)
# Go random for each run
Faker.seed()

Random Words

Faker has the ability to add random words. In this example, the variable "randomwords" has a list of 20 words, I then shuffle that list and present the winning word of the day:

from faker import Faker
import random
faker = Faker()
randomwords = faker.words(20)
random.shuffle(randomwords)
print(f'Winning Word of the day: {randomwords[1]}')
print(randomwords)

Output:

Winning Word of the day: country
['seven', 'country', 'prove', 'husband', 'cause', 'wide', 'son', 'probably', 'small', 'treatment', 'property', 'policy', 'in', 'along', 'husband', 'cup', 'news', 'partner', 'wish', 'should']

Using Faker Profile

If you need just some of the basic elements of random data, you can use a profile or simpleprofile.

profile() - job, company, ssn, residence, current_location, blood_group, website, username, name, sex, address, mail, birthdate

simple_profile() - username, name, sex, address, mail, birthdate

Exmple Use:

from datetime import date
from datetime import datetime
from dateutil import relativedelta
def mydatecal(someday):
	caldate = relativedelta.relativedelta(datetime.now(),someday );
	myformat = "{} years old".format(caldate.years);
	return myformat
	
customer=fake.simple_profile();
print(customer['name'] + ' has the following email: ' + customer['mail'])
print("Birthday: " + customer['birthdate'].strftime("%B %d, %G"))
print( mydatecal(customer['birthdate']) + " today."+ "n")

Sample Output

Michael Ramos has the following email: russellamy@hotmail.com
Birthday: September 06, 1956
65 years old today.

Installing Faker

Use PIP to install Faker

pip install Faker

If you're not able to install using the pip command, use this:

python3 -m pip install faker --user

 

Amazon Scam Call

This week's audio clip is nice and short. This is the Amazon iPhone scam that is going around. Basically, a recording tells you that someone has ordered an iPhone off of your account.

The "Amazon Representative" will issue you a refund if you screen share your computer. (Instead of just canceling the order and refunding any charges as any other company would do.)

Amazon Call

This is the cleanest version of the introduction part of the call that I could get:

The call was short because I asked too many questions that weren't on the operator call sheet.

 

Mental Training for QA

This is a spin-off of a Mental Training Plan that I found many years ago. I thought I had posted this before but was surprised to find that I hadn't.

Mental Training for QA

Putting Your Mind in a Position to Think Confidently and Compete Well

Motivation and Commitment

  • Personal Meaning and Incentives (what drives you to reach your goals)
  • The Psychology of Personal Excellence (Terry Orlick, 2000, "In Pursuit of Excellence")
  • Knowing where you want to go (having a vision)
  • How much you really want to get there (commitment)
  • How strongly you believe in your ability to arrive at your desired destination (belief)
  • Connecting with each step in front of you (focused connection)
  • Ask yourself "what type of qa engineer do I want to become here at {Company Name}, and what is it going to take for me to get there" (vision and commitment)

Mission to Excellence

  • The pursuit of excellence starts with getting to know your own patterns (awareness)
  • What is it like when performing at peak? How do you respond to pressure? What situations cause you to get frustrated and lose focus? What goes on in your head when you are performing well vs struggling?
  • With this awareness, you can better establish priorities, and develop strategies to gain control.

Connecting with your Goals: Creating a road map for success

  • Challenge yourself to work on areas that need improvement
  • Goals should be challenging, measurable, self-referenced, and within your control
  • Technique goals, practice goals, competition goals, mental training goals, strength/conditioning goals, etc.
  • Goal Planning (begin with the end in mind, develop specific action plans and strategies for achievement)
  • Set short term goals (daily/weekly, monthly) in relation to long term objectives (Career)
  • Balance outcome goals with performance goals
  • Outcome goals (Bonuses)
  • Performance goals (In order to win the big accounts, we need to commit ourselves to .....)
  • Write your goals down and specify timetables for achievement
  • Monitor, evaluate, and adjust your goals based on the progress you are making (adapt and persist)
  • Get in habit of using weekly journals
  • Think of creative ways to quantify and measure your goals
  • Take Pride and Ownership over your goals - be accountable to yourself and to your teammates
  • Finally, have a passion for you are doing - challenge yourself to raise the bar in your pursuit of excellence

Mental Preparation for Peak Performance

  • Develop your own mental plan for competing effectively (thoughts, emotions, attitude, intensity, focus)
  • Top performers consistently prepare themselves for peak performance (have/adhere to very systematic competition focusing plans and pre-performance routines)
  • Think Like a Champion (expect to do well, believe in yourself, trust yourself and be confident)
  • Approach competition with proper mindset (mentally and emotionally ready to give it your best effort)
  • Positive Expectations and Positive Thoughts (think and act confidently)
  • Visualization Training: Program your mind, muscles, and emotions for success
  • Develop your Imagination - make your imagery as vivid, realistic, and detailed as possible ("Feelization")
  • Script Success - Imagine how you will achieve your goals (action plans for achievement)
  • Focus on what you want to occur
  • See yourself performing well in a variety of different competitive situations
  • See/Feel yourself Performing Great - with confidence, full focus, competitive intensity, and trust
  • Positive energizing cues help create vivid imaging ("quick hands", "see it and drive it hard")
  • Mentally prepare yourself for coping with adversity and/or distractions effectively

Mental Focusing: Concentration, Confidence, and Composure

  • Control the Controllables: Stay Focused on You
  • What do you need from yourself at each situation, each project to compete w/confidence, intensity, full focus?
  • Self-Regulation Skills (mental and emotional readiness, emotion/energy management, positive self-talk)
  • Embrace the Pressure (harness the high energy of competition and make it work for you)
  • Connect with your Competition Goals (game plan, purposeful intentions, sense of being on a mission)
  • Confidence (tied to the way you think, feel, act)
  • Condition your mind to think confidently (believe in yourself, expect the best from yourself, trust)
  • Success breeds confidence, hence, build on past accomplishments, find your rhythm and flow
  • Concentration and Attentional Focusing (immerse yourself in the moment, connect with your performance)
  • Develop a systematic pre-performance routine and adhere to these routines while competing
  • Improves consistency and focus, enables you to take it one pitch at a time
  • Immerse yourself in the moment, quiet your mind, put everything on autopilot, trust your preparation and ability, and let your competitive instincts take over
  • Poise and Composure while competing
  • Breathing: Your most versatile mental skill (clears tension and clears clutter in the mind)
  • Patience - let the game come to you (respond to each situation with confidence, poise, and full focus)
  • Refocusing: Let go of mistakes quickly and learn how to take it one project at a time
  • Don't allow frustration to undermine your confidence or focus
  • Be Persistent and Mentally Tough - never give in or give up

 

FoundItOnAmazon

This Christmas season, are you looking for some unique gift? Who isn't? Have you tried #FoundItOnAmazon?

This is a cool section on Amazon that highlights some popular and unpopular gifts. It's a great place to go browsing to get some gift ideas.

I would recommend at least checking the site for some ideas for those hard to buy relatives or co-workers.

Found It On Amazon
https://www.amazon.com/finds

 

MacWeek Review

This week I was going through a box in the attic and came across an old copy of MacWeek magazine. This was from 1996 - 25 years ago. I thought I take some time to thumb through and take a walk down memory lane.

Issue date - November 25, 1996

Volume 10 - Number 45

Mac Week November 1996

Nine Things I Remembered

Power Computing PowerCenter 150 vs Apple PowerMac 8500/150 battle - While the were essentially the same price, the Power Computing model included more RAM, 15' monitor and Microsoft Office. All this for $2,995.

Lotus Domino - Huge color 2-page cartoon spread on a web service that pretty much has nothing to do with Macintosh.

Apple QTML - Apple QuickTime Media Layer. Apple called it a platform-independent universal container for multimedia information. This later became a foundation for the Carbon API that made it possible for legacy apps to run on Mac OS X.

USRobotics Pilot - There was a single page Ad for this personal assistant device. This automatically links to your Apple Computer. It's 4.5' tall and costs $299. The 'only' lacking feature is the ability to make calls.

Storage Costs - Zip 100mb drives were selling for $149. Cartridges were selling for $14 ( Today you can get a 16GB USB flash drive for $9 - which has the capacity to hold 160 Zip disks. No separate hardware needed. )

SCSI Hard Drives - These we're the most reliable form of disk storage. Other World Computing

CD Stomper - I have a couple of these label applicators. The applicator makes it easy to center CD dick labels. In 1996, they were selling for $79.95. I don't recall paying that much. Wow!

Netscape Constellation - This recently announced web technology will allow users to collect and organize Internet and network information. Users will be able to modify their desktops to receive real-time site updates. (It was officially branded as Netscape Netcaster, and some people may remember as it being used as Webtops.)

DVD Products - Many vendors displayed their Digital Video Disks products at Comdex/Fall '96 in Las Vegas. The new DVD players would be an extra $400 to $500 for computers equipped with DVD drives. Shipping would start in the Fall of 1997

 

Shoppers World Sign

When Shoppers World first opened on October 4, 1951 it was a new concept in shopping. People could now go to one place to do their shopping.

People driving down Route 30 would see the large "Shoppers World" sign and know where to turn to start their shopping experience.

In the 1990s, Shoppers World became outdated. At the time, Shoppers World offered an open center court while newer Malls had enclosures to protect shoppers as they went store to store. New owners decided to tear down the infrastructure and rebuild.

In 1994, the Framingham Historical Society took ownership of the Shoppers World sign. You can see the sign on exhibit at the Framingham Historical Society as part of the Framingham Top 10 exhibit.

Shoppers World Desktop
Shoppers World Mobile

Four Things I Learned

The sign was made by University Brink, the same manufacturers of the famous Citgo Sign in Kenmore Square. (Can you see any resemblance?)

This sign was located at the north side of Shoppers World - near the entrance by Kohls and Chick Fil A.

When you visit the Historic Society they may have to turn the sign on when you arrive. They don't have the sign on all the time.

When the sign was first displayed at the Framingham Historical Society they had a special event where people could come and talk about their experiences working at Shoppers World.

 

Manual Exposure Mode

Most Cameras have four common-mode settings: Program Auto, Aperture Priority, Shutter Priority, and Manual Exposure Modes. Otherwise known as PASM.

Over the next few weeks, we'll do a deep dive into each one of these modes. The goal is to better understand when it's best to select that particular mode.

This week we look at the Manual Priority mode, otherwise known as the M on the camera mode dial.

Manual Priority Header

Manual Priority Mode

M is for Manual and M is also for Max Control. So when you want maximum control of your camera, using the 'M' mode is the way to go.

Manual Exposure Mode is when the photographer manually sets the aperture, ISO, and shutter speed all independently of each other in order to adjust exposure. This gives them full creative control over the output of the image.

Advantages of using the Manual Priority Mode

This mode gives you the most power over their camera. It's great when you want total control of the Aperture, Shutter Speed, and Exposure.

When to Use the Manual Priority Mode

Once you mastered using Aperture, ISO, and Shutter Speed, you'll want to switch it to Manual mode to get more control over your shots.

This is a great mode to use when testing cameras at the store. You'll be able to see the limits of the camera without looking at the manual.

This is a great mode to use when taking photos of the fireworks show at Disney World. Make sure to play around with the settings - know what dials do what when you are in Manual mode. (Each Camera is different.)

Use this mode when you're looking for a particular effect that Auto isn't letting you do. For example, if you want a better motion blur of highway car headlights from a highway overpass.

 

Working with Python Strings

Python Strings

Various code snippets on using strings in Python.

Getting a File to a String

This is useful when you have a list in a file and you want to use it in your code. At the end of this snippet, I shuffle the new list.

f = open('~/random/content/namelist.txt', 'r');
surnames = f.read();
f.close();
surname = surnames.splitlines()
random.shuffle(surname)

Replacing different words with a single replacement

An easy way to search/replace multiple items:

# Quick Utility Function
def replace_all(text, dic):
    for i, j in dic.items():
        text = text.replace(i, j)
    return text
# Sample String
story = "author was set to move to state"
# dictionary with mixed keys
my_dict = {'author': 'John', 'state': 'Massachusetts'}
newstory = replace_all(story, my_dict)
print(newstory)

Use the String as a List

What if I wanted the 3rd word in a particular string?

# Sample string
mytext = "Pleached Baloney Silurus Ramble Chemolytic Bidentate Malanders Brugnatellite"
# Use Split to break the string
newtext = mytext.split()
# Now display the third word, keeping in mind the counter starts at zero
print(newtext[2])

Counting the number of List Elements

thekeywords= ["sum", "fast", "snow", "Sawyer", "Pond"]
totallines = len(thekeywords)
print(totallines)

Looping through an List to output data

In this example, I am splitting up a string and shuffling the words:

import random
samplequote = "Today is gonna be the day that they're gonna throw it back to you"
samplequote2 = samplequote.lower().split()
random.shuffle(samplequote2)
# Create a function to display the Array, useful if you want to do something other than printing.
def print_list_elements(list):
    for element in list:
        print(element)
print_list_elements(samplequote2)
# Quick and Easy Way:
print("Really easy way:" + str(samplequote2))
# Show it as a new String, capitalize the first word in the sentence:
print(' '.join(samplequote2).capitalize() )

 

1998 Commercials

This week's media collection features six classic commercials from 1998.

  • Small Solder Movie Trailer
  • Walmart - Clown Commercial
  • Jack in the Box - Featuring the Taco Bell Dog
  • McDonalds - Eddie the Echo ordering a McDouble
  • Wendy's - Chicken Nuggets for .99
  • Blockbuster - Prisoners Commercial

Watch the Video

 

Tips for Becoming a Tech-Savvy Senior

Americans 50 and older are embracing more tech with 81% of adults 60 to 69 owning a smartphone and three-quarters of Americans 50 and older regularly using social media, according to an AARP survey. If you're ready to embrace technology, use these tips to learn more.

Choose the Right Device

Test different devices to find one that's intuitive and easy for you to use, especially if you have limited mobility. Tablets are often ideal because they have larger screens than smartphones, but they aren't bulky like laptops. Some devices, like the GrandPad tablet, are designed for seniors, delivering only the features they need.

Ask for a Demo

If you buy your device in a store, as for a demo before you leave. For example, if you want an iPad, you can take a short drive from Framingham to the Natick Apple Store to have them set up your new device and show you how to use it.

Attend a Class

Tech classes for seniors focus on the basics to help older people learn how to video chat, navigate devices, and do other basic tasks. Senior centers or community colleges might offer these classes locally.

Learn Online

If you already have a basic understanding of navigating the internet, online tech classes for seniors can help you learn more. GetSetUp is designed for older adults and offers tech classes. Another resource for tech and other classes for seniors is Senior Planet from AARP.

Practice With Family

If you have family members visit, do a test run with video chatting or other programs you plan to use. That way, they can help if you have difficulty, and you can get pointers from them to improve your comfort with technology. You can also practice with a neighbor or friend who's comfortable with technology.

Get Extra Gear

If you plan to video chat with your family often, having a quality pair of headphones can help. Noise-canceling headphones block out background noise and concentrate the sound, so you can better focus on the conversation. Decide on your budget, and choose headphones with good reviews at that price point.

Keep your headphones at a reasonable level. Anything over 70 decibels can damage your hearing over prolonged periods,according to the CDC. Normal conversation or the sound of an air conditioner is about 60 decibels while your washing machine is about 70 decibels.

Trial and Error

Improving your tech skills often happens with trial and error. The more you use your technology devices, the more you'll become comfortable with them. Start with what you know and expand from there to learn more.

Practice Online Safety

Create strong passwords for all devices, apps, and websites. Install antivirus software on your devices, updating the programs frequently to protect yourself from cyberattacks. Do updates on your device when they become available. Never click links from people you don't know or links from unsolicited emails, as they could lead to viruses or cyberattacks.

Become Tech Savvy

You don't have to become a tech expert, but finding the right equipment and jumping in can help you become more comfortable with technology. Visit the Cryan's tech blog for more useful tips.

pexels-ron-lach-7873109
Image via Pexels

 

Bookmarklet Generator

Bookmarklet are a great way to run small javascript code on the current page your viewing. The Bookmarklet Generator is a great site to turn JavaScript code into a Bookmarklet.

The website has all sorts of creative ideas to help you generate some practical bookmarklets.

Website Description

Bookmarklet maker is a small web app to create bookmarklet or small executable Javascript apps to peform browser aumtomation tasks.

Bookmarklet Maker
https://caiorss.github.io/bookmarklet-maker/

 

MacBook Keyboard Replacement

Apple has identified a keyboard issue with some Apple laptops. In 2019, they announced a program to repair the keyboards of various MacBook, MacBook Air, and MacBook Pro for Free.

You can find all the details, and the supported models, on their Keyboard Service page:

Keyboard Service Replacement
https://support.apple.com/keyboard-service-program-for-mac-notebooks

I recently visited the Apple Store to get my "MacBook Pro (15-inch, 2016)" fixed. There is an issue with some of the keys and the spacebar didn't always work when clicked on it.

Five Things I Learned

Like any Apple repair inquire you need to schedule an appointment.

You can't check in to your appointment at the Genius Bar until 5-minutes before the actual appointment. You are welcome to visit the store earlier and browse the computers, but you can't "check-in" until 5-minutes before the appointment time. They will send you to a table to wait for a technician.

The technician first verified that there is an issue with some of the keys. She then ran some tests on the computer - which involved restarting the computer. She informed me that there is also an issue with the battery.

Here's the kicker... In order to fix the computer keyboard they need to send it out to a repair facility. This means that it could take up to five days before I would get the computer back. Since the issue I am having is a work computer, I declined to part with the laptop for five days. (Without the computer, I wouldn't be able to work.) Who has the time to give up their laptops for 5-days?

One More thing... On the bottom of the Keyboard Service Program for MacBook, MacBook Air, and MacBook Pro. is this statement:

The program covers eligible MacBook, MacBook Air, and MacBook Pro models for 4 years after the first retail sale of the unit.

Wait, what?

This means that the "MacBook Pro (15-inch, 2016)" isn't eligible for the free keyboard replacement program - even though it is listed on the website as an eligible model. that Apple would likely charge me for the service.

The technician didn't say anything about a charge. But I wonder if they would have said something once it arrived at the repair shop.

Apple should update the page with the current list of supported models.

Quick Alternative Solution

I use an external Bluetooth keyboard. It works perfectly well. I didn't have to buy one, I had a spare one from an old iMac.

 

Indian Head Road Plaque

The Nipmuc Indians were the original owners of the land that would become Framingham. In 2019, a plaque was placed on a hill where they once used as a lookout.

Indian Head Plaque
Indian Head Plaque

Sign at the top of Indian Hill Street:

This plaque commemorates the first inhabitants of the area, the Nipmuc people. As early as 1680, English settlers named this hill "Indian Head." The "Indian" they saw here were Nipmuc, part of the larger Algonquin Nation. "Head" referenced the head of a hill or "headland." The area was an ideal environment for the Nipmucs because of it abundant lakes and streams, fish being a staple of their diets, and for its wildlife and rolling meadows, easily used for the growing crops. Descendants of the Nipmuc Tribe continue to live throughout the area.

Framingham Historical Commission, 2019

Fun Facts about the Plaque

Elans Gelfand, Framingham High School student, lead the fight to put up a sign on Indian Head Heights honoring the tribe that once ruled the area.

Originally she wanted the street ( Indian Head Heights ) to be renamed but settled for a plaque commemorating the sight.

Elans had been planning on taking some action after reading a book about the Indians during the colonial days of America.

Larry Spotted Crow attended the small ceremony. Larry is a Native American Cultural Educator and a known member of the Nipmuc tribe.

The plaque was officially installed on June 12, 2019.

The plaque is located at the top of the hill which is 320 feet above sea level - one of the highest points in Framingham. Nabcott Hill is the highest point at 534-feet.

Framingham Historical Commission created and paid for the sign.

Finding The Plaque

The plaque is located at 14 Indian Head Road. There are no official parking spaces near the plaque, but it's a nice quiet street - so there should be a problem with street parking.

Note: The street is a steep uphill climb, icy weather is probably not a good time to go.

 

Shutter Priority Mode

Most Cameras have four common-mode settings: Program Auto, Aperture Priority, Shutter Priority, Manual Exposure Modes. Otherwise known as PASM.

Over the next few weeks, we'll do a deep dive into each one of these modes. The goal is to better understand why someone would want to select that particular mode.

This week we look at the Shutter Priority mode, otherwise known as the S on the camera mode dial.

Shutter Priority

Shutter Priority Mode

S is for Shutter and S is also for Speed. So when you have a high-speed shot, you should think of moving the mode to S.

"S" is an automatic mode to set the shutter speed. Use this mode to freeze a moving subject (fast shutter speed) or convey the impression of movement (slow shutter speed).

Advantages of using the Shutter Priority Mode

Use this mode when you have an action scene and you want to have more control. Using "Auto" mode isn't going to help because the camera isn't going to know your intentions for the particular shot.

If you have multiple cameras, you should know the shutter speed upper/lower limits of the camera. You can find this by simply moving the mode to "S" and then making the speed adjustments to see what the limits are.

If you're going to take pictures of runners at a Marathon, you want to make sure that you pack the best camera for the shot. You may be surprised at which camera has a fast shutter speed.

Here's a useful graphic to illustrate what happens at the various speeds:

shutterspeedgraphic

When to Use the Shutter Priority Mode

Fact Action Photos - If you are shooting moving cars or a soccer game, you may be better off using a high shutter speed. A speed of 1/2000 is considered to be good.

Night Time Photos - While your better off using the Aperture Priority to have the best shot, but there maybe times when having a slow shutter speed may add some cool effect.

Waterfall Photos - If you want to add a blur effect to a waterfall, you'll want to see the 'S' setting. Simply select a slow shutter speed on your camera to get the motion blur effect.

 

Ordinal not in range

Have you ever encountered an error where the "Ordinal not in range?"

Ordinal Not In Range

Sample Output:

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 13821-13822: ordinal not in range(256)

According to various StackExachange comments, this error is thrown because Python can't encode some characters in a non Ascii string.

For me, this particular error occurred because I had bad data in my MySQL database - there was no codec checking done on INSERT. Apparently, PHP didn't have a problem handling the 'latin-1' codec - but using Python is now an issue.

Quick Easy Solution

My quick and easy solution is to have MySQL convert the text to ASCII. This is easy to do in-code:

cur.execute( "select date, CONVERT(teaserText USING ASCII), CONVERT(myTextData USING ASCII) from Order .... "")

Here's what happens: The MySQL CONVERT utility will convert the text in the teaserText and myTextData columns on the fly. The process is seemless and adds very little overhead while Python runs the query - your miles may vary if you have a complex database query.

Use Views

A better solution would be to create a view that would automatically convert the data, this way you can fix other columns if they cause issues:

CREATE OR REPLACE
ALGORITHM = UNDEFINED VIEW `order_vw` AS
select
    date_format(`w`.`orderdate`, '%M %e, %Y') AS `date`, 
   convert(`w`.`teaserText`
        using ascii) AS `teaserText`,
    convert(`w`.`myTextData`
        using ascii) AS `myTextData`,
    `c`.`name` AS `item`,
from
    ((`order` `w`)
where
    (`w`.`weblog` <= curdate())
order by
    `w`.`weblog`

 

Health Insurer Quotes

This week's audio sound byte is another robot auto-dialer fail.

I got this call earlier this summer. This is a robocall for the Health Insurer Quotes (pretty generic company name eh?) The call was never able to transfer to a live operator.

These types of calls are illegal. There's no way to track the call down. Even the number that they tried to call (773) 207-1080 is a dummy number.

Listen to the Call

 

How to Get the Most Out of Your Social Media Strategy

A phone with Facebook open on it.

No matter what kind of business you have, you're probably using some social networks for it. They're great tools to connect with your current customers and reach new people. However, if you just create an account and post from time to time, it will get you nowhere. Instead, you need to create a plan and stick to it. But how to get the most out of your social media strategy?

You might think that this is a big job, and you wouldn't be wrong. Of course, you can't dedicate all your time to it. But at the same time, it doesn't make sense to do it if it won't bring you any results. Hence, the trick is in finding the right balance.

In other words, you should focus only on the things that could make a difference for your company and bring you closer to your goals. For example, if you want to modernize your moving business, social media is a great tool to use.

It all sounds like common sense, we know. And it can be easy, but only if you do it correctly from the start. So, let's see what steps you need to take to get there.

Set Logical Goals for Your Business

For your social media strategy to work, it must have realistic goals. A good place to start is to ask yourself what you want from social platforms.

Now, the accent here is on ''realistic''. It's always a good idea to tackle the smaller objectives first and then scale things up when the time is right. You'll learn how to do things properly, and it'll make the whole process a lot easier.

Here are some sample goals that you might find interesting to use for your strategy. You can combine any of them, but be sure not to push it too far. Keep things simple and stick to one or two objectives to get the best results.

  • Increase brand awareness
  • Get leads and sales
  • Grow your audience
  • Boost engagement
  • Drive traffic to your site

Two men in the office talking about how to get the most out of your social media strategy.)
Make your strategy logical if you want it to work.

Research Your Target Audience

Try not to make assumptions about your followers. It's crucial that you understand your target audience as well as possible, so you know how to sell them whatever you're selling.

It pays off to take the long route and research them as much as possible. Knowing a lot about your social media audience means that you'll understand how they behave online. You'll also know when they're active, so you can consider automating your business's posting. And automation is excellent as it allows you to do the majority of work whenever you can, and the posts will publish themselves when you tell them to do so.

To point you in the right direction, we'll give you a glimpse of what you can expect on the most popular platforms out there.

  • Facebook and YouTube are great for ads. Most of their users have high earnings, so if you want to sell, this is where you should be.
  • If you want to get to Millenials and Gen Z, look no further than Instagram. Here, bold, eye-catching content will get you noticed.
  • Pinterest is used a lot more by women than by men. So, if this is your target audience, you know what you need to do.
  • If you're looking for a well-educated user base, LinkedIn is as good as it gets. Here, you post that in-depth niche content that you couldn't post on Facebook.

One of the main takeaways from how to get the most out of your social media strategy is that you don't spread yourself too thin. Instead, focus on platforms that your audience already uses.

Find Out What Metrics are Important for You

Regardless of your industry or specific goals, you should rely on data when shaping your strategy. Of course, this doesn't mean that you should track every metric out there. On the contrary, keep an eye on the things that matter for your goals.

For instance, if you want to get your home-based business off the ground, you need to keep track of how many people you reach. And if you're trying to get your community active, high engagements are what you need.

There are other things like clicks, hashtag performance, likes, and sentiment. Each of them will play a big part in a specific scenario. So, take your time and learn about the numbers. If you know what they're all about, you'll know how to look at them and use them.

Metrics on the laptop screen.
Keep track only of metrics that matter to you.

Work on Your Content

You can't have a good strategy without good content. Consider your goals, audience, and brand to figure out what kind of content you need to post and where. Use this information to create a content strategy that will help you get closer to your followers.

Here, you want to develop a content theme and stick to it. Find a way to communicate to your audience that will set you apart. You want them to recognize your posts as soon as they see them. If you manage to do that, you'll create a long-lasting impression that will help your brand.

Don't be afraid to show your human side on social media. As a matter of fact, we recommend you do this. Your followers will be glad to know that there are real people behind the company. It will make them feel closer to you, which can't be a bad thing.

Pay Attention to Timing

If you want to use social media to move your business forward, you have to think about timing. Research and find out when is the best time to post on the platforms you're using. If you post at the right moment, you'll get plenty of engagement, and your content will find its way to more people.

Now, you can automate the process and tell the software when you want things to be published. However, it's a good idea that someone from your team is active when your posts go live. When your followers start writing comments and asking questions, you need to respond as soon as possible.

HA man looking at his watch.
If you want to get to the bottom of how to get the most out of your social media strategy, always be on time with your posts.

Conclusion

So, how to get the most out of your social media strategy? As you can see, it only takes a bit of work to put together a tactic that will work. The tips we gave you today will make sure you don't spin in circles or shout to an empty room. Follow them, and you'll find your audience, and they'll love what you do.

Meta description: Find out how to get the most out of your social media strategy. Learn all the tricks and start growing your business from today.

 

Canon Explains Exposure

Are learning how to use a DSLR camera? Hate taking all the complex classes? Wish there was a better way to learn all the manual components of taking a picture? There is!

Cannon has a cool site called Canon Explains Exposure where you play around will all the various setting and see what happens.

You simply adjust the various settings and get a "live view" of the changes. It is a good way to learn how simple adjustments can change a photo.

Canon Explains Exposure
http://www.canonoutsideofauto.ca/play/

 

Magnifier Annotate Tool

A useful tool in a screen capture program is a magnifier. This allows people to enlarge a certain part of an image. Usually, this is done to highlight some graphic or text.

On my computer, I have two tools that has the magnifier functionality: Snagit and Photoscape X. Here are my thoughts on each one.

Rem Dog Snagit2021
Red Sox Store touched up with Snagit

Three Reasons Why Snag-it is Great

Multiple Shapes - You have a choice between circle, rectangle, and round rectangle shapes. Sometimes, a circle isn't the best way to zoom into a section, particularly if you highlight a word/phrase in a sentence.

Offset Magnify Style - New in 2021!, you can now drag the magnified area so that you can see the original highlighted elements. This is a great way to point out something without covering the area.

Combined Effects - Once you apply the magnifier tool, you can add additional effects without impacting the magnified area. For example, you can add a highlight to the area so that it stands out more.

Rem Dog Photo Scape
Red Sox Store touched up with PhotoScape

Three Reasons Why PhotoScape is Great

Circle Designs - Photoscape only has circle magnifiers. However, there are 20 different types, in some of the types, you can change the colors, and in others, you can only fix the styles. The designs are nice and they can help draw attention to the magnified area. There is one design where there's no border and it just fades out - this produces a neat effect.

Change the Angle and Scale - You can rotate the inner part of the magnified area - not exactly sure why but it does create a cool effect. You can also scale the inside of the magnified area without changing the size of the magnified circle.

Change the Magnified Location - You can change the "focus" of the magnified area. It's a bit different than in Snag-it. You simply move the inner blue dot to the area you want to magnify. Snag-it automatically puts in a line between the focus point and the magnify section. In Photoscape, you have to put in your own arrow. I guess the nice thing about Photoscape is that you have a choice if you want an arrow. There may be cases where you may not want to include the line.

Which is the Better One?

Both PhotoScape and Snag-it have some cool ways to implement the magnification tool. I think PhotoScape gives the user a bit more control over the style and effect of the magnification.

While it's nice that Snag-it includes a reference line when moving the focus of the magnification. I think there are times when I may not want to have that reference included. I like that PhotoScape gives the option of manually adding it in.

I also like that you have a lot more choices when it comes to magnification design.

 

Setting Up Your Business and Life in Framingham, MA

Framingham Park Mobile
Framingham Park Desktop

Starting or moving a business as you are trying to juggle family responsibilities can be overwhelming. How do you know which city or town is the right place? How do you know where both your company and your family can thrive day in and day out?

While there are no shortcuts to choosing the best location for the next chapter in your life, considering factors like affordability, local business support, cost of living, and nearby colleges can help you make a sound decision and set your family up for a healthy, successful life. Below, cryan.com discusses these factors in more detail and explains why Framingham, MA could be the ideal city!

Affordability

No matter what kind of business you are starting or relocating to, the cost of living in your new city will make a major impact. When housing, groceries, fuel, and other family expenses are astronomical, it makes it hard to grow a company and flourish as a family.

Framingham is within a half-hour drive of Boston. While you will reap the benefits of living close to the iconic city with such a rich business and entrepreneurial community, you will not have to pay the high costs of living that come with living in Boston or other east coast cities like New York or Washington D.C. The average one-bedroom apartment in Framingham is $2,360, and the median home listing price is $510,900.

Entrepreneurial Support

Wherever you choose to move, you will want to research whether or not the community offers support for business owners and entrepreneurs. Framingham is a prime example of a city that loves its businesses. As you go through the challenges of starting or growing your venture, you will benefit from having access to many resources, including:

  • Downtown Framingham, Inc.
  • Small Business Development Center at Clark University
  • MetroWest Chamber of Commerce
  • Framingham Business Association
  • MetroWest Economic Research Center
  • Leadership MetroWest

Living in Framingham

Quality of life is also critical when it comes to choosing where to live. You, your family, and your future employees and customers all stand to benefit from diverse cultures, world-class food, top-notch community events, and kid-friendly parks. Framingham has much to offer in this area. Here are a few examples:

  • Garden In the Woods: Native Plant Trust
  • Amazing Things Art Center
  • Callahan State Park
  • Hanson's Farm
  • Framingham Public Library
  • Action Athletics
  • Chocolate Therapy Birthday Parties
  • Plaster Fun Time
  • American Heritage Museum

Colleges and Universities

Being surrounded by renowned educational institutions can do wonders for a new or growing business. Even if you have no plans of going back to school to earn a degree, you will benefit from having an excellent talent pool to choose from when there are good colleges and universities near your city. And it doesn't get much better than the schools in the Framingham area! Here are a few of the many options:

  • Framingham State University
  • Wellesley College
  • Babson College
  • Boston College
  • Harvard University
  • Regis College
  • Massachusetts Bay Community College

General Business Tips

If you are starting a company, you have many other things to think about in addition to the city to which you are moving. Get an early start on your business preparation responsibilities so that you can launch on a firm foundation. For example, choose a business structure that will work in your company's favor. Consider forming an LLC so that you and your business are protected from liability. If you work with a service like Zen Business, you can rest assured that your LLC is established in compliance with state regulations.

You will also need to create a catchy business name that represents your mission, values, and offerings, and then you will need to register it with the state. And of course, you will need to research any licenses and permits you must obtain before opening up shop. If you would like additional tips on getting your business up and running, visit cryan.com to access informational blogs, multimedia, and other entrepreneurial and technology resources!

Choosing a city for your family's next chapter can be challenging. But if you consider the information and advice above, you can make the process easier and less stressful for everyone in your household. Framingham is a beautiful business-friendly town that has plenty to offer for adults and kids alike!

Would you like to read more helpful content on business, software, and more? Visit cryan.com today!

 

Aperture Priority

Most Cameras have four common-mode settings: Program Auto, Aperture Priority, Shutter Priority, Manual Exposure Modes. Otherwise known as PASM.

Over the next few weeks, we'll do a deep dive into each one of these modes. The goal is to better understand why someone would want to select that particular mode.

This week we look at the Aperture Priority mode, otherwise known as the A on the camera mode dial.

aperture Camera

Aperture Priority Mode

When your camera in in mode A, you choose the aperture and let the camera automatically adjust the shutter speed for optimal exposure. Rotate the mode dial to A to enable the Aperture-Priority AE mode.

Think of Aperture Priority mode as the same functionality as the iPhone's Portrait Mode - but way better. DSLR cameras have more control over the Aperture than iPhones.

Advantages of using the Aperture Priority Mode

Most camera experts mention that this is a great mode to force the background to be out of focus.

This is a great mode to use when you want to open up the lens in low light condition - just remember to keep the camera steady or use a tripod.

The camera aperture settings, otherwise known as "f-stop," determines the amount of background blur. This is a handy chart to help:

Aperture Info Sheet
Quick Guide to F-Stops

According to the above guide, it looks like Apple defaults to 5.6. That might be a good selection to start.

When to Use the Aperture Priority Mode

Object Photography - When you want to focus on something that may have a busy background. Such as a person in a field.

Reduce Glare in Night Pictures - If a street light is overpowering a night shot, you can use Aperture Priority to reduce the shine from the street light.

Duplicate iPhone Portrait Functionality - When you are trying to take a portrait picture like you would with the iPhone. Remember: In the DSLR world, you do have more power than a point-and-shoot smartphone.

 

View Python Exceptions in the Browser

To enable debugging your Python CGI, use the following in your Python header:

import cgitb
cgitb.enable()

Now when you run into an error, you will see the error message in your browser. Just be careful not to enable this for production pages. cgitb is part of the standard distribution package.

Official Description

If an uncaught exception occurs, a detailed, formatted report will be displayed. The report includes a traceback showing excerpts of the source code for each level, as well as the values of the arguments and local variables to currently running functions, to help you debug the problem. Optionally, you can save this information to a file instead of sending it to the browser.

Note: This doesn't handle all errors, for example, if you put in an illegal condition statement, you'll see a syntax error in the browser, but will need to run the python script from the command line to see the error.

Turn Off When In Production!

cgitb is a good thing to enable when developing code. Once the code is complete, remove the cgitb reference so that if customers encounter an error they don't see the code.

Python Name Error
Python Error page can show sensitive information!

Change the enable to display the data to a log file. Here's an example entry.

import cgitb
cgitb.enable(logdir=os.path.join(os.path.dirname(__file__), 'Weblog'),
             display=False,
             format='text',
             )

You can always setup a GitHub action to search for the "cgitb.enable()" before posting code into Production.

 

Travel to Cape Cod

This past Thursday, I drove down to Orleans, Massachusetts from Hopkinton, Massachusetts. I took out the GoPro Hero 9 and set up the Time Lapse.

My TimeWarp Default Settings on GoPro Hero 9: Resolution: 1080, Lens Wide, Speed Auto, Speed Ramp: Read Speed, Schedule Capture: Off, Duration: No Limit, Timer: Off, Zoom: 1.0x, EV Comp: 0, White Balance: Auto, ISO Min: 100, ISO Max: 1600, Sharpness: High, Color: GoPro, Wind: Auto.

Watch the Trip!

In the following video, I used the default TimeWarp settings. When I got to the Borne Bridge, I enabled the real speed and then went back to Hypersmooth once I was on the Cape.

Video was shot on November. 4, 2021.

This is interesting because the trip started at 4:30 pm, and ended around 6:30 pm. This means the video starts in light and ends in darkness. It's a good way to see how GoPro handles low light in Hypersmooth mode.

 

Luminar AI

Last month, I blogged about Luminar AI and how excited I was in using the newly purchased application. This is a quick recap of using the Luminar Ai software for the past month.

Luminar Ai Nov Overview
Touching up a boring parking lot photo.

Seven Things I Learned

The suggested templates aren't always the best selection. The suggested templates are determined by AI to be the ones best fit to enhance the photo. I have found that they aren't always the best choices. I found that manually applying an edit using the Enhance Accent to be the best choice in most situations.

I tested Luminar AI against Photolemur and found that for quick edits Photolemur was the way to go. However, if I want to make the photo stand out, Luminar AI is the best option. Photolemur works best to quickly fix color balance in a photo. However, you can't touch up the photo or enhance it as you can with Luminar AI.

The Sky effect is very cool. It's super easy to replace the sky and by doing so can drastically change the mood of the image. I did encounter some issues with the sky not being replaced near trees.

I was able to add my own Augmented Sky object. I was looking for Star War's Death Star to be in a Halloween photo. It was easy to add and apply all the options. The nice thing is that the Augment Sky object stayed in the library so I can use it again at a later date.

I learned a lot by watching the Luminar AI - Tutorial for Beginners in 10 MINUTES! on YouTube. Bai teaches you all the tips and tricks to get you started using Luminar Ai. The only bad thing is that this is for an older version, and some functionality has changed.

There is an in-product promo for the Luminar Neo that is to be released this winter. I just feel it's way too much in-product promotion.

I tested Luminar AI's Erase tool vs Affinity Photo's Inpainting brush tool to see which one was the best. I found that Affinity Photo's Inpainting brush tool did a better job in removing objects. Not only were the objects removed, but Affinity Photo's Inpainting brush tool did a better job in the replacement. I found that you couldn't tell objects were removed because of how the replacement looked.

Overall View

Overall I really like Luminar AI. Its a cool application that helps make ordinary photos to be extraordinary.

 

National Do Not Call List

If you are tired of getting spam calls, one thing to do is to check if your phone number is on the "Do Not Call Registry." The FCC has set up a service where you can check your number.

What about Cellphone?

According to the FCC, "it is not necessary to register cell phone numbers on the National Do Not Call (DNC) Registry to be protected from most telemarketing calls to cell phones."

If you have a landline, you should register your number - unless you like being interrupted.

Do Not Call Registry
https://www.donotcall.gov/

Telephone Consumer Protection Act

Consumers in the United States have protection through the Telephone Consumer Protection Act of 1991.

One More Thing...

The Do Not Call Registry doesn't apply to call centers outside of the United States. They are under no obligation to follow the rules set by the FCC.

This means, as a consumer, you are not obligated to be truthful in answering these calls. :)

 

Keyboard Maestro 10

Keyboard Maestro 10 was released this week and it's packed with a lot of cool new features. You can find the complete list on Keyboard Maestro website.

The nice thing is that the developer is giving a discount for Keyboard Maestro 9 users. You can save $7 if you upgrade in the next 30-days. I would highly recommend getting the upgrade.

Three Features I am Excited About

Display in Menu Bar

Display in Menu bar allows you to make a Keyboard Maestro Group into it's own menu bar item. Now you can clean up the Keyboard Maestro menu by moving things out.

You can configure in what applications the menu bar appears. This way you don't have menu bar clutter in applications that won't use various macros.

You can only set Menu bar to real groups not smart groups.

Keyboard Maestro Menu Bar
Cool Trick here is to add your computer IP address to the menu bar.

Setting up the Group Menu bar:

  • Select a group on the left pane
  • In the far right pane, change "Do not display in menu bar" to "Display in Menu bar"

There's options to control what actually gets displayed - but that's for a later blog post.

Favorite Actions

Favorite Actions are a quick way to reuse common actions. Not only is the main part of the action in play, such as paste text, but also the various texts of that action. This is useful when you want to reuse certain actions over and over again.

One action that I have used multiple times is the "Set System Clipboard to Past Clipboard." I used this when I want to reset the clipboard content after running a macro.

Keyboard Maestro Favorties 2021
1. Select the Favorite in the Action category. 2. Available Actions. 3. How to add a Favorite.

To setup a favorite:

  • Open up a Macro.
  • Right click on an Action and click "Add to Favorite" (In the middle of the right click menu.)

To find all favorite actions:

  • Command Control A to open the Insert Action search box
  • Search for Favorite

Paste by Name Action

This allows me to paste clipboard history content that matches certain criteria. This would be equivalent to me opening up the Clipboard History Switcher tool and searching for something then pasting it in.

This would be useful when I want to paste the most recent Jira url in the clipboard.

Keyboard Maestro Paste By Name

Blog Posts

Check out some cool tips and tricks with Keyboard Maestro on my Keyboard Maestro Blog Posts.

 

Election 2021 Recap

A quick follow-up to this week's Mayor election. While the City of Framingham hasn't released the final numbers, they are likely not to change from the unofficial results.

Framingham Votes

Six Things That I Learned

Charlie Sisitsky beat Yvonne M. Spicer by a nearly 2:1 margin. (He won by 4,374 votes.)

In 2017, Yvonne M. Spicer beat John A. Stefanini by a closer margin - 2,673 votes. 2017 was the first year Framingham elected a Mayor.

Voters commented to the Framingham Source that they didn't like how Yvonne M. Spicer handled the whole pandemic and water-sewer enterprise funds.

District 9, Southern Framingham, was the only district where Yvonne M. Spicer beat Charlie Sisitsky. It also happens to be the district with the lowest turnout. Precent 16 has an 18% turnout and Precent 17 had a 10% turnout. Both precents also had single-digit turnouts for the primary.

Yvonne M. Spicer worst performing district was District 1, Northern Framingham, where she only got 20% of the vote in Precent 1 and 22% of the vote in Precent 2.

Precent 4 had the highest turn out with 42% reporting. Precent 4 covers the Pheasant Hill area. This is part of District 2 where Adam Steiner and Mary Feeney were fighting for the District 3 City Councilor spot. Adam Steiner won the seat by only 2 votes!

 

Programmed Auto

Most Cameras have four common-mode settings: Program Auto, Aperture Priority, Shutter Priority, Manual Exposure Modes. Otherwise known as PASM.

Over the next few weeks, we'll do a deep dive into each one of these modes. The goal is to better understand why someone would want to select that particular mode.

This week we look at the Program Auto mode, otherwise known as the P on the camera mode dial.

Camera P Mode

The "Point-and-Shoot" Program Auto Mode

In Program Auto mode, the Aperture](https://www.nikonusa.com/en/learn-and-explore/a/tips-and-techniques/understanding-maximum-aperture.html) and [shutter speed are adjusted for optimal results. Users can make the adjustment of the combination of aperture value and shutter speed while keeping the correct exposure.

Terminology Check:

  • Nikon calls this Programmed Auto.
  • Sony call it Program Auto
  • Canon, Fujifilm calls it Program AE.
  • Olympus calls it Program shooting.

Advantages of using the Program Auto Mode

The Program Mode is a great next step in-camera control from the Auto functionality. You would use the Program Auto Mode when you want a bit more control over adjusting the aperture and shutter speed but don't want to adjust them individually.

The Program Mode is useful when you want to add more depth of field, to a shot. Using the Auto mode, you may not have the flexibility.

This mode is perfect when you want to take a low-light photo without the camera forcing a flash. Using the Auto mode, the flash is an automatic action when it detects low light.

When to Use the Program Mode

Taking daytime pictures of snow - Sometimes the white is too bright. In Program mode, you can adjust the exposure, which you can't do in Auto mode.

Tweek Auto Mode - When you want to make a quick change to the auto mode. Start with the auto mode, then flip to "P" to make some minor adjustments.

Time Constraint - Best when you need adjustment but don't have much time to adjust all the settings.

 

Formatted String Literals

One of the features I like in PHP is the heredoc string syntax because developers can include inline variables. This makes it easy to include variable within content.

Here's a sample snippet:

$content .= >>> end_here Hello, $world! end_here

In Python 3, you have the same functionality by using f-strings (otherwise known as Formatted String Literals). To enable this you simply prefix the string with an 'f'. For example:

content += f""" Hello {world}! """[1:-1]

or

print(f"Hello, {fname}, thank you for your input.")

Check out the Detailed Python Instructions on Formatted String Literals.

Practical Tricks with Python

Remove the First Line

If you get in the habit of starting text on the line immediately below the start of the heredoc, you should add a [1:-1] at the end of the heredoc. This is because in Python the heredoc actually starts after the third quote. This means that if you use heredoc to generate lists, the first item will be empty. Yikes!

I would recommend setting up a code snippet with the [1:-1] at the end so you don't forget.

In this example: I created a list of restaurants using a heredoc, converted it to a list, randomized the list order, and then displayed the results:

foodchains = """ Taco Bell Boston Market MacDonalds Sonic Fatburger Jack-In-The-Box """[1:-1] fastfood = foodchains.splitlines() random.shuffle(fastfood) print(f'Best place to eat is {fastfood[1]} and {fastfood[2]} then {fastfood[3]}')

Fix the Unicode Error

If you encounter the dreaded "UnicodeEncodeError" from a database import, you can easily fix it by using a simple convert trick within your string. You can apply a modifier to the Formatted String to convert the value before it gets outputted.

In this example the display text will be convert to ascii():

print (f'Name: {databaseName!a})

Another useful format command is '!s' which will convert the text to string.

Adding Commas to Digits

When you have a large number and want to "commify" the output, simply use this trick with formatting string literals:

totalSales = 20000
print(f'Formal: {totalSales:,.2f} and Simple: {totalSales:,}')
// Formal: 20,000.00 and Simple: 20,000

Execute Expressions

You can easily perform commands within the f-string. In this example, I am displaying the current date:

## Display Date as Month, ##, #### (Without the leading zero in days.)
from datetime import date
print(f'Today is: {date.today().strftime("%B %-d, %G")}')

## Another way:
import datetime
dt = datetime.datetime.now()
print(f'{dt:%A} {dt:%B} {dt.day}, {dt.year}')

Another example, making sure that the display name is properly capitalized.:

## Make Name Uppercase content += """ Welcome to the Forum {FirstName.capitalize()}! """[1:-1]

 

Senior Health Services

Recently I have been overwhelmed with phone calls from Senior Health Services. These calls are targeting senior citizens who may not know these are scam calls.

Here's a sample of one of the calls:

Christopher Ryan 34 - Senior Benefits

Facts About These Calls

These are phishing-type calls. The caller is trying to get as much personal information from you as possible. This is why these calls always start by asking your age.

Sometimes these calls start with a robot answering, sometimes it's a real person.

The calls come in bunches. The first set of calls start around 9 and the last one is usually around 7:45 pm.

If this was a litigate call, why wouldn't they say that in the caller id? Why do they need to spoof the caller id to think it is a random call?

According to the real Senior Benefit Services company, these calls are coming from various Pakistan call centers.

 

About

It's a pleasure to welcome you to cryan.com's main blog page where you will find all kinds of informative blog posts that cover a variety of topics of interest. From technology to lifestyle and career advice, there is something for everyone.

We strive to provide our readers with the highest quality content available, so you can be sure that you're getting the most up-to-date, reliable information.

Schedule

WednesdayNew England
ThursdayGluten Free
FridayMacintosh
SaturdayInternet Tools
SundayOpen Topic
Monday Media Monday
TuesdayQA

Other Posts

Coming Soon.