Translate

Saturday, October 10, 2020

Tech Topic Connection

Before starting this course, I was already heavily involved with computers and information technology (IT) for over 30 years. During this time, I got involved with coding and, more recently, began creating applications using the Python programming language. Since I am already versed in languages such as C++, JAVA, and Python, I chose programming language as my tech topic.

Without programming language, there would be no forms of information technology. The earliest computer applications started with programming on punch cards for a loom created by Joseph Marie Jacquard (Vahid and Lysecky). The punch cards allowed the loom to weave different patterns, thus negating the need to change the machine's mechanics. As time progressed, programming languages became more verbose and easier to understand. Almost all computer programs are written in some form of programing language, and without it, there would be no computers at all.

Although computers rely on programming languages to operate, there would be no programming languages without computers. The loom was built and was capable of weaving patterns without the need for punch cards, but it needed to have certain mechanical parts organized to operate. The organization of the components, in essence, is the programmed language. Contemporary computers run on a central processing unit, also known as a CPU, and, hypothetically, the CPU of the loom was whatever made the machine move. The CPU would not function without the programming language, and modern computer systems do not function without an operating system. Operating systems have been written in various programming languages throughout time. The Unix operating system, created in 1973 by Ken Thompson and Dennis Ritchie, is written in the C programing language, and it runs on many computers worldwide (University of Colorado Boulder). Operating systems manipulate the CPU, memory modules, hard disk drive, and input/output (IO) devices to get the computer to function. If not for programming languages, no operating systems would exist, and as stated earlier, no computers would either.

Application software and programming languages go hand-in-hand. For an application to work, it needs to be programmed with instructions via a programming language. Using Python as an example, a programmer can create a simple application that sends a greeting to its user by using the following code:

            name = input("Please type in your name:\t")
            print(f"\nHello {name}!")

This application will first ask for the user's input and then display text with the input onto a window, typically a command based prompt. Many applications have been written in multiple programming languages, and they have contributed to the betterment of everyone's lives.

Programming languages also go together with databases and their management. Several languages work specifically to operate a database, and the most common is the Structured Query Language, more commonly known as SQL. SQL works by using a set of commands to organize, manipulate, and retrieve data stored on a database (Brooks). Various database engines use SQL, including Amazon's Aurora, Postgre SQL, MySQL, MariaDB, and Microsoft SQL Server (aws.amazon.com).

Network architecture, management, and security partially influence my choice of programming languages as my tech topic mainly because of the work I currently perform for my job. Managing servers remotely requires a basic knowledge of networking and the securities involved with its operation. Programming languages have helped me connect to the servers I work with to submit commands, retrieve data, and change settings without the need to be in front of the server physically. Parts of the code I wrote required security tokens before the server can be accessed, and I would love to learn more about implementing more robust security features.

Over the years, I have had a lot of exposure to programming languages and have only recently begun to take more interest in it, due primarily to automation. I have come to enjoy writing programs, and it has opened my mind to new and exciting ways to view computers, and it's may processes. I hope to become a competent software developer eventually and possibly work in a research and development department.

References

Amazon AWS (N.D.) Amazon Relational Database Service (RDS)

    Retrieved October 8, 2020 form:

    https://aws.amazon.com/rds

Brooks, C (January 2014) What is SQL?

    Retrieved October 8, 2020 form:

    https://www.businessnewsdaily.com/5804-what-is-sql.html

Vahid, F., Lysecky, S. (July 2015) INT 100: Fundamentals of Information Technology &

    Literacy. Retrieved September 9, 2020 from:

    https://learn.zybooks.com/zybook/ASHFORDINT100AcademicYear2018

University of Colorado Boulder (N.D) History of Unix

    Retrieved October 7, 2020 from:

    http://ibgwww.colorado.edu/~lessem/psyc5112/usail/concepts/hx-of-unix/unixhx.html

Tuesday, October 6, 2020

Network Security

The assignment of week 4 for INT100 asks to look into network security.

The internet has become more than a fascinating tool for people to find information, entertainment, work, and many other useful things throughout the past three decades. Still, unfortunately, many individuals choose to use it for nefarious purposes. Most people who use pinging to contact sites for connectivity purposes do not realize that although it seems harmless, pinging a site with enough packets can cause the site to crash. The most commonly known ping interruption is a Denial of Service (DoS) attack in which a single person or group flood a web site server with packets to overload its bandwidth (Vahid and Lysecky). Other types of ping attacks include MAC flooding, evasive UDP land attacks, and “Ping of Death” (Sankar). To mitigate these attacks, network administrators need to detect illegitimate traffic at the routing level, manage the bandwidth of their services, and be mindful of the site architecture so that it can handle a high amount of traffic (Sankar).

Other than DoS attacks, there are several different forms of malicious computer security breaches, including computer viruses and email spam. Computer systems are vulnerable to these types of attacks because they can inadvertently install damaging software or malware that can corrupt a person’s computer or company’s computer network (Vahid and Lysecky). Some computer virus symptoms include the computer not functioning properly, slow processing, or complete OS failure. Symptoms of email spam include virus installation and mass emails sent from your email address, causing the email service provider to lock your account (Vahid and Lysecky). The best way to prevent computer viruses is to install anti-virus software and to update the computer’s software with the latest updates (nortonsecurityonline.com). To avoid spam email, users should carefully evaluate emails that contain attachments. Users should make sure that they know exactly what the attachment file is and if they know the sender, ask them if they are aware of an email they sent with an attachment. Emails that seem suspicious should be converted to plain text instead of HTML format to avoid possible infections (University of Wisconsin Milwaukee). Lastly, users should not post their personal email online on social media or a website, and they should not attempt to reply to a spammer (Stucken).

Conclusion

As wonderful as the internet and computers are, it is necessary to know the possible dangers of attacks from would-be hackers. Attacks become more sophisticated every year, and a lack of prevention becomes more costly. With good information, awareness, and tech-savvy, anyone can protect themselves from becoming victims from those of ill-intention.

References

Norton Security Online (N.D.) Computer Viruses and Their Spread Prevention.

    Retrieved October 1, 2020 from:

    https://www.nortonsecurityonline.com/security-center/computer-viruses.html

Sankar, K (December 2013) Type of Attacks

    Retrieved October 1, 2020 from:

    https://community.cisco.com/t5/security-documents/type-of-attacks/ta-p/3154808

Stucken, A (September 2010) How can I stop getting spam emails?

    Retrieved October 1, 2020 from:

    http://www.bbc.co.uk/webwise/guides/stopping-spam-emails

Vahid, F., Lysecky, S. (July 2015) INT 100: Fundamentals of Information Technology &

    Literacy. Retrieved September 9, 2020 from:

    https://learn.zybooks.com/zybook/ASHFORDINT100AcademicYear2018

University of Wisconsin Milwaukee (N.D) Tips for Avoiding Computer Viruses

    Retrieved October 1, 2020 from:

    https://uwm.edu/itsecurity/tips-for-avoiding-computer-viruses/

Computers in the Workplace

For week four of INT100, the first discussion touches on computers in the workplace. We were to choose an industry and talk about the functions of computers within them. I thought the best industry to speak on would be the health care industry.

From its inception, the health care industry has been recording patient data to keep records about their health, historical visits, and personal information. Record-keeping was primarily done on paper and filed in large cabinets for future access upon a patient's next visit. As the years go by, doctors, dentist, and other health care professionals had to create archives which either took up office space or required them to rent space to store patient data. The need to archive data then becomes expensive and can pose a threat to personal information should the archived data be lost or stolen. With the increase of technological power and processing, the health care industry is now moving slowly towards logging patient information into a digital format.

I have been seeing the same dentist for over 13 years, and she continues to improve her customer relations using technology. Her patient data is now registered in a proprietary application on a local network and backed up to cloud storage, eliminating the need to have physical archives and added security. She has also incorporated an email and text-based messaging system that sends alerts to patients on when their next scheduled appointment is, which is great because myself and others tend to forget about the appointment, especially since they are typically scheduled every six months. With all the new technologies that have been implemented to her business, her employees must have a fair amount of computer literacy to enter patient data, create future scheduled visits, and process payments. Procedures that my dentist took can be applied by primary physicians, chiropractors, and other professionals as well.

The technology that the health care industry will need to assist with patient care will continue to expand and make patient interaction more streamline. The technology over the next ten years will see health care professionals move all processes to cloud-based servers that will eventually make schedules, send alerts to patients via call, email, or text messages, and automate billing processes. Patients may also interact with computer interfaces to make scheduling fast and more accessible. There is no doubt that new technology will have a lasting impact on the health care industry, and in the end, both health care professionals and their patients stand to benefit immensely.

Traveling Through a Network

For week 3 of INT100, we were assigned to interact with websites via ping and traceroute commands. On this assignment, I was able to utilize the knowledge I have about ping and traceroute from what I already learned years ago. Using the ping command is a good way to determine if your connectivity to a particular site is active or down. It can also be used to see if your internet connection is poor by pinging several sites and seeing how long a packet took to reach its destination or how often the ping times out. Traceroute is a good way to see how your site request travels throughout a network. Both of these commands are not just for use on websites, they can be utilized on devices on a private network as well. As long as a device has an IP address or a secured DNS (Domain Name System) name, a name given to a device or website that is easy for a person to memorize, anyone can use these commands to access network traffic to those devices (cloudflare.com).  

Packets travel through a network via a wrapper that contains a header and a footer. Within the wrapper, there is information about the origin of the packet, the kind of data in the packet, and its final destination. When data is sent out, that data is split into different packets that do not have to follow the same path, and thus makes the networks, such as the Internet, fast. Once the packets reach their destination, the receiver reassembles the data and recreates the originally transmitted data (Strickland). 

Other than Google.com, I chose Nintendo's Japanese site at nintendo.co.jp and DHL's German site at dhl.de. The ping request had no issues with time outs or dropped packets. What I did notice is that the sites outside of the country took longer for the packets to reach their destination. Packets sent to Google averaged around 13.6 milliseconds (ms) to reach their server, Nintendo averaged 15.7ms, and DHL averaged 128.1ms. The results tell me that the servers used by Google and Nintendo are more robust and have better bandwidth paths that DHL has.

The traceroute results were a real eye-opener for me. I have run traceroutes before, but I had some mixed results from Nintendo and DHL. When I ran a traceroute to Google, I had no issue getting the full path to their site, but with Nintendo and DHL, traces were being rerouted to a content delivery network (CDN) called Akamai. Once the trace reached a certain point for Nintendo and DHL, it would time out. If I were to use my best guess, I think Nintendos trace reached a server near O'Hare International Airport in Chicago, due to the partial DNS name segment "ord01"; ORD is the city code for O'Hare Airport. The trace for DHL went to London England and then to Paris France where it reached an Akamai server before timing out. It looks like Nintendo and DHL decided to host their content on Akamai's servers to minimize delays in loading their web page content (akamai.com). 

I mentioned how ping and traceroute commands can be used to troubleshoot Internet connection problems, but if a user is curious if their internet connection is out completely, you can find out by pinging or tracerouting multiple sites. If all pings time out or you receive a message of "Destination Host Unreachable," and your traceroutes do not go past the first hop, chances are your internet is down. On occasion, connectivity to servers either drops or lags, and when running ping/traceroute commands, there will be time outs or errors. There are various reasons why ping and traceroute commands time out or return an error response, which includes server or network router failures, excess traffic to destinations, not enough bandwidth from an internet service provider, and a possible Denial of Service attack on a website.

I use ping and traceroute commands often for work to see if connectivity is down for a remote server. I also use traceroute to find names of switches/routers that servers are connected to. Some time ago, my team had a connectivity issue with a server in Rushford MN, and we were getting dropped packets to the server. The fix was a reboot of the modem that the firewall connects to. Another reason why errors might occur in a ping/traceroute is that the server you are trying to access is disconnected from the network or is powered off. In some cases, the IP or DNS name is wrong.

Resources

akamai.com(N.D.) What does a CDN stand for? CDN Definition

   Retrieved 9/23/2020 from:

   https://www.akamai.com/us/en/cdn/what-is-a-cdn.jsp

cloudflare.com(N.D.) What is DNS | How DNS Works

    Retrieved 9/23/2020 from:

    https://www.cloudflare.com/learning/dns/what-is-dns/

Strickland, J (N.D.) How IP COnvergence Works

    Retrieved 9/23/2020 from:

    https://computer.howstuffworks.com/ip-convergence2.htm

Monday, October 5, 2020

Documenting a Day

Week two of my INT100 class involved documenting a day in my life and I chose to document Monday, September 14, 2020. In the reflection, I used word processing, spreadsheet, presentation, and database applications to log information about what I did that day. The following is an excerpt from my experience.

Functions between word processors, spreadsheet makers, presentation applications, and databases are very unique and operate differently from one another. Each has a unique feature that is more usable on one application that it is for the other. Word processors such as Microsoft Word can display information from a spreadsheet application such as Excel, but Word cannot do complex formulas the way Excel can. PowerPoint can have text and spreadsheet information, but it cannot do the particular functions that Excel and Word were programmed to do, yet it is far better at running graphics and animations. Database applications are similar to spreadsheets but are far more powerful in adding and manipulating data constantly while being run on a server. It is useful for all these apps to share some features from others, but each must have a specialty to be utilized more effectively.

The advantages and disadvantages of each application can be summed up in a spreadsheet-style:

Application

Advantage

Disadvantage

Word Processors:

Word, Coral Word Perfect

Capable of multiple text manipulations.

Some word processors have too many options making them challenging to use.

Spreadsheets:

Excel, Google Sheets.

Easy to use data input methods for keeping track of information. Formulas.

Formulas can be hard to learn and utilize. No spell checking.

Presentations:

PowerPoint, Google Slides

Powerful graphical and animation abilities. Themes.

Like word processors, there are too many features that make it difficult to use.

Databases:

SQL, MongoDB

Excellent data storage and manipulation for servers and business needs. Data security.

Expensive to maintain and run. Complex to manage. Must learn its language to understand how to operate.


In my opinion, the best application for documenting information about my day would be spreadsheet software. Spreadsheets are easy to use and can sort data in an order that is easy to understand and present. Data added to a spreadsheet is easy to organize, and if needed, it is also easy to add calculations. Formulas help with adding and changing data to what is already saved on the spreadsheet as well (Vahid and Lysecky). Features such as adding pictures, charts, and graphs also help make things you did during your day stand out more.

Using spreadsheet software comes in handy for all the other applications mentioned earlier. In the case of a word processor, you can take data from the spreadsheet and copy-paste it to the word document without having to create a table like what was done in describing the advantages and disadvantages above. Spreadsheets can also be added to presentations to highlight data when presenting to colleagues or management. I frequently use spreadsheet data in presentations when presenting to senior management to clarify what I am trying to explain. Data from spreadsheets can also be moved to Database software because they operate similarly, and in some cases, the data can be transferred. There are different plug-ins for Excel, which include MySQL for Excel that can take data from the user’s spreadsheet and send it to a database (mysql.com).

Conclusion

Over the years, word processor, spreadsheet, presentation, and database applications have made people’s lives easier and businesses much more successful by allowing users to increase their productivity while maintaining the same amount of effort. Personally, I use these applications every day for work assignments, and they enable me to show the management staff my potential at being an effective employee. As time progresses, these applications will become better and more feature-rich, and this will allow everyone to have the potential to become more successful both personally and professionally.

References


MySQL.com (2020) MySQL for Excel

    Retrieved September 18, 2020 from:

    https://dev.mysql.com/doc/mysql-for-excel/en/

Vahid, F., Lysecky, S. (July 2015) INT 100: Fundamentals of Information Technology &

    Literacy. Retrieved September 9, 2020 from:

    https://learn.zybooks.com/zybook/ASHFORDINT100AcademicYear2018

Web/Mobile App Critique

Ditch your phone at home!

Smartphones have been a huge part of people's lives all around the world and will continue to be a part of us as its technology continues to improve. Unfortunately, we tend to keep it close to us as if it is an appendage. I, for one, do not like to keep my phone near me when I am at home and when I do, I find it less convenient to use it because of the small screen. I can do almost anything on my personal computer except for sending texts. Fortunately for me, there is an app that solves this problem, and its called MightyText.  

Founded in 2011 by former Google employees, MightyText is both a web and mobile-based application that allows users to send text messages from their phones via their computer (Shontell, A). To use MightyText, simply download the app on your cell phone via the Play Store and open the app. In the app, you will be prompted to open MightyText either via a web page on a browser compatible with its plugin or by downloading the app form its website. After the phone syncs with the app, users can access their text messages, as seen on the desktop app below.

The free version of the app allows users to look at their SMS/MMS messages for the last three months, while a monthly/yearly subscription unlocks and unlimited storage time and more. If you happen to have the phone far enough away not to hear it, alerts are sent to your computer to let you know when a message has come in. On the main page, a pop-up of any new messages will appear at the upper right of the app and will disappear after a few seconds. Another nice feature within the app is the ability to send MMS messages such as pictures, GIFs, and videos to the phone. If the file is too big, MightyText will allow you to reduce the size and then send it out, as well as alert you that the message was successfully sent through the phone.

If you wanted to see old pictures, videos, or GIFs you received, typically, users have to look at these from individual contacts. MightyText has a feature that puts them all together on one screen, and it shows you who was the sender.


By placing the cursor over the message, users can get the date when it was received. If you click on the picture, there are options to share on Gmail, Twitter, and Facebook, as well as forward the message, save it, or delete it. There is also the ability to create albums from the MMS messages as well.

Other features include a scheduler that can send a message at a particular time, a list of your contacts, and the battery percentage. Users can even see the apps on their phone, access the phone's gallery, set up on-phone app notifications, and send a command to the phone to ring it in case it was misplaced. You can even place a call and send files through the app.



With all the excellent features that come standard on the free version, there are some caveats that I think need to be improved to make the user experience better. First off, users need a Google account to sync a phone to the app. I would think it would be better to use a phone number, or any other email would work better to connect to the phone. Next is there currently is no standard production app for iPhone users. The iPhone has been in production since 2007 and by now, there should have been a stable app available for iOS, plus the team at MightyText missed out on potential revenue by having the app on Apple's product. There is a beta version of the app that has been in testing for almost a year for iOS but it is extremely buggy and has a hard time syncing in real-time. The last issue I see is that the subscription service is a bit on the expensive side. The standard price is $6.67 per month or an annual up-front fee of $79.99. For those who do not constantly work from their computer, it would be a waste to pay that amount and not use the service, and for that, the price should be lower.

To better give an idea of how I would rate this app, I will use a scale of 5/5.

  • Usability- 4/5 - Easy to use and understand with no learning curve.
  • Design- 5/5 - Great design, especially on PC and MACs. The iPad app can use some work.
  • Functionality- 4/5 - The PC and MAC apps are great but the iOS app needs a lot of polish.

All-in-all, MightyText is a great app to use for those who do not want their phones plastered to their hands. I have the beta app on my iPad and it helps to send some messages from the device instead of having to get up from my couch to send a message. I can also see who is calling, so I can either choose to ignore it or run to answer the call. For those who do choose to pay for the subscription service, there are a lot of extended features that make the app more enjoyable, like themes, ad removal, and email sync. I highly recommend giving this app a shot.

References

Shontel, A (June 19, 2012) Early Google Employees Create MightyText To Free Text Messages From Your Phone.

Retrieved 9/15/2020 from

https://www.businessinsider.com/early-googler-employees-create-mightytext-to-free-text-messages-from- (Links to an external site.)your-phone-2012-6



Sunday, October 4, 2020

Programming Language

Only a and full of people know that I am back in school and I can't believe how quickly the weeks have gone by. As part of our final assignment, we have to reassess some of our previous discussion posts and assignments. This post will be about my experience with Scratch, an online coding platform meant on educating anyone interested in programming language and how it behaves as well as some material from our textbook. I created a simple interactive animated program that asks for user input and performs actions based on user responses. Professor Dehmani gave me great feedback on the overall assignment and said I hit all the marks of the grading rubric. Here is the URL to my Scratch program:

https://scratch.mit.edu/projects/424964800/

I had fun programming and interactive project using Scratch. Scratch was easy to use and navigate, and the way it’s designed is very intuitive. I can see the designers wanted to make programming easy for beginners as well as those who already are familiar with coding. I have been coding in Python for the last three years, and it was reasonably simple for me to get a feel for designing what I wanted to do with the interactive program I created.

Since I already know how to code, there were some issues I found with adding separate sections of code to the project. I used three sprites, and I wanted to have the behavior of each separate from each other. If I were to code this myself, I would use functions or classes, but Scratch doesn’t seem to have something like this. I also found that I could not display text that was able to add user input together with new words.

The way I approached these difficulties was to stop for a moment and think about how the program wants the user to combine the blocks. Once I got an idea of how the designers wanted me to proceed, I began to work on the sprites. The way I understand how the sprites work is each one is its own type of function. I used the cat, guitar, and basketball sprites for my program. I had to figure out how I would get commands from one sprite to the next, and I did by using the broadcast block. For the basketball sprite, I had to call a message that I named “shoot_ball” and it animated the basketball going into the hoop. One thing I didn’t like about this is that I had to contain the code within an ‘if’ statement instead of a function, and I could not figure out an alternative to this since this action was reliant on the user input. For the guitar sprite, I used a message called “show_guitar” to make the guitar appear. I made it so that if the user clicks on the guitar it made a sound of an E power cord, which I recorded with my own guitar and amplifier. I really liked implementing that audio part.

Since I am already writing code in Python, I feel there was not much insight I gained from this exercise. I will say that I found it intriguing how the developers at Scratch designed a method that can quickly teach beginners how coding works together. I also like the many options they allow users to access when designing a program, especially something that interactive, such as the program I wrote. 

For this class, we are using the book "Fundamentals of Information Technology & Literacy" by Frank Vahid and Susan Lysecky. From the text based on chapters 2.8, 2.9, 2.10, and 2.11, I used print statements, input() functions, and “if, else” statements on my Scratch program. These statements and functions worked as I expected them to. Since I am familiar with Python, there was nothing relatively new that I learned.

The text mainly speaks to punched cards, Assembly, and high-level languages when discussing the differences between various programming languages.Punched cards are similar to binary inputs, which a computer understands using 0 and 1. Binary is the simplest form of programming. With Assembly, there is a small number of human language commands that help the programmer implement what they want the computer to do but requires a lot of knowledge of memory blocks. Assembly language made programming easier by removing the need to decipher binary before implementing it. High-level language improved coding by using more readable words and design mechanics so that programmers can implement what they want more simply. With high-level languages, users no longer had to decipher binary or remember memory block usage. I find high-level languages easier to use as it is written in a manner that I can understand. I prefer not to have to remember memory blocks and decipher binary.

There are various scenarios where each of the above-mentioned programming languages would be most effective. Punched cards are obsolete, so the only way it can be useful is by being a part of history and having it discussed/displayed so a student can understand the beginnings of one of the earliest forms of coding. Assembly is still used today and is more efficient when programmers want to write a program that is faster and uses less memory to write programs. NASA even uses Assembly to send commands to machines that are still in use today. High-level languages are better suited for contemporary projects and user needs. High-level languages can be used to develop web pages, make animations, and design spreadsheets, and it can be done quickly. There are multiple scenarios where high-level languages are used effectively, one being YouTube.com. At one point before Google made changes over the years, YouTube was almost entirely written in the high-level language Python. In terms of which programming language is most popular, I think High-level languages are. The readability, ease of use, and the fact that they are free to download make it the most highly sought after language. High-level languages are easy to teach and quick to understand. They can be utilized to make life easier for those who need it most, such as businesses, the medical field, and people with disabilities. As time goes by, high-level languages will continue to get more efficient and easier to write. Soon, anyone will be able to code with little to no training.

That was a lot, wasn't it? I hope you enjoyed reading my post as much as I enjoyed writing it. 😁

References


Vahid, F., Lysecky, S. (July 2015) INT 100: Fundamentals of Information Technology &

    Literacy. Retrieved September 9, 2020 from:

    https://learn.zybooks.com/zybook/ASHFORDINT100AcademicYear2018

van Rossum, G. (December 12, 2006) [Python-Dev] [Python-checkins]MSI being downloaded

    10x morethan all other files?! Retrieved September 13, 2020 from:

    https://mail.python.org/pipermail/python-dev/2006-December/070323.html