Master of Your Destiny

Workforce

As the economy begins to rebound from the COVID-19 pandemic, people are starting to go back to work. Unfortunately, it seems some sources are suggesting that companies have engaged in sexist behaviors by only bringing men back to work. Or have they? I asked both my wife and my daughter what they thought the reason for this apparent sexism may be and they both came to the same conclusion – women were likely staying at home to take care of their children. None of the articles I read came to this conclusion.

Shouldn’t we stomp out sexism whenever we find it? Absolutely. As my daughter enters the workforce with a STEM degree, I want her to have the same opportunities as men. As a business owner, I have a simple rule for the people I work with – they must be the most qualified people I can find. Note my lack of concern for race, gender, religious creed, etc.

Unfortunately, I see a bigger problem with the assumption that everyone is bigoted: it destroys the motivation of those who are the target of those prejudices. For instance, as women see articles about sexism in the workplace, they increasingly believe that everyone is out to get them. Likewise, the constant insistence of racism creates an environment where minorities believe they’re unable to get the job. This causes those individuals to put in less effort or even give up. After all, if the system is rigged against a person, why would they bother to try?

These notions of sexism and racism end up becoming a self-fulfilling prophecy. People give up, we see a less diverse workforce, and then point out the racial/gender makeup of the workforce to prove our conclusion.

What Do I Tell My Daughter?

When I talk to my daughter about sexism, I tell her that she is in control of her own destiny and can accomplish anything she wants to do. I tell her to ignore the reports of widespread bias and instead work hard to achieve her goals. I tell her that when she falls for narrative that women are at a disadvantage in the workplace, she becomes the victim and is unable to achieve her goals.

Conclusion

While I have witnessed sexism in the workplace, I reject the notion that women are systematically oppressed. I believe that women are just as capable as men, and that when they begin to see themself as the victim they kill their own upward mobility through the paralysis of fear. Most importantly, I reject the politics of division and believe we all end up better when we bring the best people together – regardless of race, gender, or any other meaningless classifier.

Business Continuity

The Road Ahead

During the last several months, we have seen unprecedented damage to businesses. Every single day, we see more reports of closures and bankruptcies. Yet, among all the carnage, we see some businesses that managed to thrive. What was it that allowed these businesses to perform so well during this time? Business Continuity Planning.

Of course, some businesses – like grocers and stores with other necessities – were less impacted by the virus. And others, such as hair stylists and nail salons, are utterly unable to perform their job without close contact. But in between those two lie a large number of businesses. In those businesses, the winners were those with business continuity plans that included technology.

As businesses closed down in Pennsylvania, one of the first stores inundated with business was BestBuy. Within short order, all of their computers and laptops were gone. Why? Because businesses were equipping their employees to work from home. Businesses with the ability to setup an online store quickly found they had to. But the biggest winners were those who already had the technology in place. Those businesses were already able to function remotely and their staff had done so before with work from home policies or as a necessary part of their business travel.

Recommendations

How can you be better prepared next time? Here are some technology recommendations for businesses to ensure they’re in a better position next time.

First, find a technology for remote communications. Zoom has been heavily mentioned during the past few months, but dozens of other options exist. As a software company, I like Slack. Others like Google Hangouts. Whatever your choice, make sure your staff is familiar with it.

Second, setup your office for remote access. This can be as simple as a service such as GoToMyPC.com or as detailed as a VPN setup. Whatever it is, make sure all your staff is able to access all necessary systems from outside the office.

Third, invest in cloud technologies. Whether they are off-the-shelf or custom solutions, get as much as you can outside your network so that those systems are easily accessible by your remote workforce.

Fourth, examine relative mobile technologies. Many cloud solutions have mobile apps, and many other work functions can be performed on tablets or phones. This will allow greater availability of your team regardless of where they are – at home or on the road.

Conclusion

Hopefully, this is a black swan event that does not occur again within our lifetime. But even if it doesn’t, you may be impacted by natural disaster, fire, or other extraordinary events that have the same impact – difficulty performing business function. Put the tools into place today so you are better able to handle the next disaster.

If your business needs help with custom cloud or mobile solutions, please reach out to us. We can create solutions for small business or large enterprise. Then, you can sleep easy knowing your business will continue regardless of what goes on around you!

Financial Planning

Money

The unprecedented impact of the Coronavirus will certainly be the subject of countless articles during the following decade. After all, there’s much to be learned from this event in a variety of fields. Economists, epidemiologists, lawyers, and business owners will all approach the subject from a different angle. Undoubtedly, many of those conversations will involve financial planning and economic impact.

As I look at the nation, after over a month of lockdown, the most obvious thing I see is the lack of sound financial planning. From the individual to the federal government, this event has exposed a gaping hole in our ability to plan for disasters. Of course, it’s easy to say that nobody could have predicted a pandemic – so how could we prepare? But countless disasters happen every single year. Earthquakes, floods, hurricanes, tornados, winter weather, and extreme cold are common events that could easily bring harm to a business or family.

Furthermore, sound financial planning has always said you should have six months cash on hand. That’s wise advice for individual, corporate, and government financial planning. Yet, within a week of the lockdowns, people were lining up at food banks across the nation. Surely businesses would be better prepared. Right? Sadly not. Within short order, the government opened loan programs to keep businesses from failing. Even worse, the government itself was unprepared and an extra 2 trillion dollars was added to an already unsustainable national debt to deal with the virus.

From one end of our nation to the other, nobody had any money in the bank to weather a week long storm – let alone a months long shutdown. And, sadly, I think we’ll see innumerable businesses lost in the fallout of this national disaster.

How can we – the business community better deal with these kinds of events in the future? First, we obviously need to ensure that we have adequate cash on hand to continue to meet our financial obligations even if we are unable to conduct business. Second, we need to find creative ways to operate our businesses using eCommerce, cloud systems, or other technologies that can operate even during a disaster. Third, we need to encourage everyone – at all levels – to put money back for a rainy day. We may not see another plague in our lifetime, but we will undoubtedly see other disasters.

Marketing 3.0

Marketing

In the early days of marketing, companies relied on print, and broadcast media. Newspapers, magazines, television, and radio provided advertising solutions for everyone. Then came the internet. During the last decade, we’ve seen marketing rapidly move to things like Google AdWords as well as social media. Today, people make heavy use of Facebook, Twitter, and Instagram to push their brand. Through both paid advertising as well as providing content, social media is now a major player in the marketing realm.

Unfortunately, however, this seems to be changing faster than many would like to admin. Facebook’s user base is dwindling, and Twitter is typically only used by people looking for information within a niche market – such as music or tech. Worse yet, LinkedIn – once a place for professional networks – is becoming the venue of choice for advertising. Initially, I embraced the use of LinkedIn to advertise my services to local businesses. Unfortunately, over the last year, I have been increasingly bombarded with connection requests from people who simply want to sell me products. Now, I am increasingly reluctant to connect with people I don’t know. I look for where the individual is located, and if it’s outside the US, I reject the connection. I’ve removed individuals who acted as spammers. None of this is new, of course, I’ve talked about it before (Social Media Etiquette and Sleazy LinkedIn Users).

Now, I am left to wonder where the next phase in advertising will take us. I assume others are having the same experiences, and are wondering the same thing. Mobile advertising seems to be good, but only if you’re selling games. Advertising on digital audio services such as Pandora or Spotify are great – if you’ve got the budget. I have to assume that other’s are having the same experiences I am, and so these methods are becoming less useful. I think we are on the brink of a massive shift in marketing, but I’m not sure what it will be. But whatever it is, I hope it’s less spammy than what people are doing now.

Simple Text Search

Search

I often need to search a directory of code for instances of a specific word. I like tools that I can use from the command line so that I can execute them from an SSH session across the network. Here’s how I do it.

#!/bin/bash

SAVEIFS=$IFS
IFS=$(echo -en "\n\b")

if [ $# -ne 1 ]
then
        echo Call is: `basename $0` string
else
        for file in `find . -type f | cut -c3-`
        do
                count=`cat "$file" | grep -i $1 | wc -l`
                if [ $count -gt 0 ]
                then
                        echo "******"$file"******"
                        cat "$file" | grep -i $1
                fi
        done
fi
IFS=$SAVEIFS

Developer Development

Growth

Most developers focus their time on learning new technologies or languages. They go to tech conferences and expos, read about new frameworks online, and take the occasional class on Coursera or Udemy. This is great, but I think too many developers are lacking critical skills in other domains.

I taught myself to program. Then, when I finally went to college a little over ten years ago, I decided to get a degree in psychology. Why? Because I wanted to better understand people. Like many developers, my interpersonal skills weren’t the best. I figured that by learning more about how people think, it would benefit me professionally.

Now, I’m getting ready to start my masters degree. Not in computer science, but in business. I already know programming incredibly well, so the next step for me is to better understand business. Not only will this help me as an entrepreneur, but will also help me should I ever transition back into the workforce.

Where do you focus your educational efforts? While learning more about your trade is a great idea, don’t ever forgot to hone those ancillary skills that will improve not only your marketability but also your ability to understand how to use your trade to the benefit of the world you work in.

Line Counting

Codes

A common metric used in software development is lines of code. While it’s not always a useful metric, it’s sometimes nice to know just how large a project is. I have a script I use to count lines of code in a folder. It will iterate through a variety of common file extensions and count all lines of code excluding blank lines. It’s written using sh, so it works on Unix, Linux, or MacOS, and should work on Windows if you have the Bash subsystem installed.

#!/bin/bash

# add additional extensions here
extensions=(bas c cc cob cpp cs cshtml fth f90 go h html java js jsp m pas php pl py sc sh sql ts xhtml)

for extension in ${extensions[@]}
do
  lines=`find . -name "*.$extension" -type f -exec cat {} \; | tr -d '[:blank:]' 2> /dev/null | grep -v '^$' | wc -l `
  if [ $lines -ne 0 ]
  then 
    echo $extension: $lines
  fi
done

Languages vs Algorithms

Programming

I was recently discussing a project with a potential client. His project was using a language I haven’t used heavily in quite some time. He was disappointed because he was struggling to find developers to work on his project. I indicated that I would not have trouble getting back up to speed on the language and being able to move his project forward.

This really highlighted in my mind what really matters in development – it’s not languages, it’s algorithms and software design. All programming languages are, at their core, pretty similar. For example, all languages include:

  1. Syntax for creating variables,
  2. Selectively executing a block of code based on one or more conditions
  3. Repeating a portion of code multiple times
  4. Encapsulating code into functions

These basic structures are responsible for all the software you will ever use. Whether it’s a complex operating system like Windows or MacOS, a cell phone application on iOS or Android, or an application on the cloud, they all rely on the basic elements above.

Once you understand the basic syntax of a language, you move into the more important stuff – algorithms. Algorithms are a set of instructions to perform a given task. Regardless of the language, the algorithm will be largely the same. Next up on the hierarchy is software design. Knowing syntax and algorithms is great, but to really develop quality software you need to be able to design the interactions between components. None of these things vary substantially between languages. Languages are merely the syntactic rules you must follow to define your algorithms and implement your design.

I think people need to worry less about what language a developer uses and look for higher-order skills including algorithms and design. That’s what really defines the skill of a programmer!

Local Hack Day 2019

Learning

In December, I once again spoke at the South Hills School of Business and Technology for their Local Hack Day. I shared some of the lessons I learned throughout the year, and would like to share them here on my blog as well.

Team Members

Throughout the year, I encounter people who would like some development work on the side. They may be experienced developers looking for additional work, recently graduated noobs, or people just trying to find a place to start on their software engineering journey. As a small business, I don’t have the bandwidth to take them all on. But when I see potential, I try to see if I can plug them in. This year, I learned three valuable lessons about staff. First, inspect what you expect. Just because someone says they possess a particular skill does not mean they actually do. Finding this out late in the game can be very costly. Second, I would encourage noobs to check their attitude at the door. If you’re just starting out, don’t assume you know more than me. You don’t. Third, friends don’t always make great team members. They may be great to hang out with, but mixing personal and professional relationships can be dangerous.

Customer Relations

As a software engineer, learning to deal with customers is a new challenge for me. This year, I learned the value of contracts. While I have always preferred to do business with a handshake, I’ve learned that customers may not always think the same. Without a contract, you have no recourse when your customer relationship goes south. On the flip side, when you do have a signed contract, treat your customer like the girlfriend (or boyfriend) that you’ve always wanted. Show them how much they matter as a customer. Otherwise, they’ll find a service provider who will!

Productivity

I started this year doing a lot of work that yielded no value. As a business, I must focus on those things that generate revenue for my organization. Some of that work is obvious – such as billable customer hours. Others tasks are essential, but don’t generate revenue directly – such as advertising efforts. Still other tasks are utterly useless – stop doing them. For things that are essential but don’t generate revenue, find ways to automate them or to lesson the workload. I use Hootsuite for my social media, for example, because it optimizes my social media workflow.

Valuable Tools

As a developer, it’s important to have the right tools available to not only be in a position to exploit future opportunities but also to be able to meet current business demands. I have been telling people for the last year to learn OpenCV and Artificial Intelligence. The future will undoubtedly involve computer systems doing work previously only done by humans. In the meantime, learning how to create PDFs is a far more practical business need for everyone. I’ve also found LaTeX to be a very useful tool for creating business documents. Not only can I easily check the documents into source control, but I have 100% control over the layout without my software injecting the style it thinks I want.

Education

In the tech world, you can never be left behind. You need to always be learning new tools, frameworks, and languages. Go to sites like Udemy or Coursera and further your tech skills. Seek out valuable certifications and read books. Louis Pasteur famously said “luck favors the prepared”. In the tech world, that’s typically the programmer with the broader skillset.

Conclusion

Each year of our lives, we should strive to be more than we were last year. The starting point for that is to reflect on the last year and learn from your successes and your mistakes and then to apply those lessons to the coming year. Look back on your last year and take note. This year can be the best year ever if you put in the effort to ensure you’re on the right path.

Apple vs Android

Cell Phones

I’ve been an Android user for the last decade. This was driven by two main factors. First, Android devices come in a variety of sizes, colors, and configurations. Second, I find the Android developer environment to be far superior to iOS development. I’ve previously shared posts about iOS development horrors as well as the difficulty of automating iOS builds. So, when it comes time to buy a new phone, I don’t hesitate to purchase an Android device. Whether it’s Google or Samsung, or if I’m looking for a cheaper ZTE device, I love Android phones.

Recently, I was asked by a client to download any iPhone-only application needed for our project. Since I already have an account with Google Fi, I decided to purchase an iPhone and use my Google Fi sim card . I decided I would carry both phones around for a few weeks and see how the iPhone compared.

The most striking thing I found about the iPhone was how well it integrates into Apple’s product line. As a MacBook Pro user, I make frequent use of the Notes application. These notes automatically appeared on my phone. I have countless WiFi access points on my laptop, and they too were immediately available. Calendar, reminders, Safari passwords, iCloud data, everything I checked was immediately there for my use. My Android phone can access Google Drive as well as contacts, but the integration is nothing like Apple. Of course, Google isn’t working with either Microsoft or Apple to integrate their tools into the OS, so this isn’t surprising.

Now, as I’ve found the iPhone integration so valuable for my business, I see myself continuing to use both. While I have never been a huge iOS fan, their integration with their OS is truly amazing. Who knows – maybe I’ll eventually use an iPhone as my primary phone!