What are we doing here?

This blog includes a series of videos and references to help new users or enthusiasts better understand how to use open source and free technology tools. The quick links includes more information for accessing many of the tools covered along with other references to learn more for taking advantage of these tools.

Click HERE to see the full list of topics covered!

Introduction to virtualization & containers





This is an introduction to virtualization - hypervisors, virtual machines (VMs), and also containers. Virtualization has become a transformative technology for several reasons highlighted in the video, both in terms of cost savings, but also flexibility in deployment and application usage. Containers - essentially Linux name spaces - build upon the same idea of virtualization with a mix of benefits (low resource usage per deployment, fast to deploy) and limitations (their primarily Linux based and confined). I'm including several links for reference that I've found helpful and hope you can as well.


I think virtualization is pretty straightforward beyond the inner workings of a hypervisor itself. Install a hypervisor, figure out how to create and access VMs and away you go. Containers - though I don't touch on much in the video are interesting, but complex in how to deploy, manage, and use. I attribute a lot of this to the maturity difference between the the technologies, and the underlying complexity of running sandboxed services on a single kernel vs just creating an environment to install wholly independent systems on. 

Ideally when deploying an IT backend, both technologies would and do get used where needed. Having an understanding of both is important for those looking to get into IT or infrastructure workloads for the foreseeable future. 

Hope it helps, leave a comment if you have any suggestions, questions, or comments.



"How wealth has changed" - Motivation for More Open Source

Listening to the news this past week, one good or interesting podcast was about "How wealth has changed" on the Indicator from Planet Money  of NPR.

It struck me, though not really pointed out directly in the 9 minute show, that it was essentially a call for open source. In the episode, the host and guest were discussing how for much of human history the economic prosperity of a country was tied to land - its size, its resources, its ability to be used for farmland and crops, precious metals, etc. Countries in need of or desiring more resources would then start wars, make colonies, and generally squabble for the finite amount of resources available. Come to the Enlightenment and then the Industrial Revolution, there was a new shift for manufacturing with skilled or knowledge-based workers became valuable. The shift has continued to this day with technology now being synonymous with computers and IT, though can really permeate all facets of life and work. What is also more intriguing is that now that ideas and knowledge are able to help drive economic growth, and in many ways are more valuable than raw resources, value growth is accelerated like never before seen in human history. While land and natural resources are finite, knowledge is not, and essentially sharing ideas increases growth potential.

The show also touched upon a few topics of the trade war and patent infringement, but largely argued for better sharing of ideas without mentioning open source. Open source, in the computer science world is essentially the real-world manifestation of this idea. The code, the "how to do something", is put out for the world to see and use. Open source enables technology and know-how to be shared on the Internet, making it available for billions to use, millions to implement, and thousands to even help maintain and improve so that ideas are not only shared, they can be refined at scale.

Outside the scope of the discussion, but underlying the idea is the Solow Growth model which essentially states that technology (either tools, computers, processes, legal systems, governance, etc.) is the true driver of growth in modern society.

Open source technology, the sharing of ideas and know how freely in an open way, can be linked to global economic growth and development. Knowing how to use these tools, and taking an interest in them is absolutely critical, and I was happy to see that idea be recognized by mainstream media.

Intro for Google Forms and Scripts




This is an introduction and walk through of using Google Forms, reacting to data as it comes in, and also setting a custom script to forward the contents of the request to a specific mail address. This is a feature that is very useful for doing things like surveys and basic initial user/customer engagement.

For internal use it should be more than fine. When embedding in a website there are issues about user privacy which need to be considered and managed. As of this writing, though Google itself does comply with the laws of the land (GDPR in the EU, FCC & FTC in the US, and other regulations in other countries), things like right to be forgotten should be practiced - i.e. a company should be able to either script or manually delete a user entry from someone who requests to do so.

Here are some more references I found helpful when setting up this script.

I am not a privacy lawyer, but I want to make the information available about how useful the forms tool is and can be. The alternative to using something like forms requires a larger amount of code, the ability to setup a database of some sort, employing proper SSL certificates on the server, the server itself and likely storage of said server, another server or software set to send and receive emails, and a manager to run all of that infrastructure and backend. For anything which might not warrant all of that overhead, Google Forms is a great tool for collecting, managing and reacting to feedback.


What is a server?


This blog and video aim to introduce and explain servers.

From 1 GB of RAM to 3 TB of RAM, there is a slew of servers for a wide variety of usage cases. I try to break it down by the services running on any given box, explain a little bit of the hardware differences and then go into more depth using the open source operating system, FreeNAS, as an example of a home server. 

I know a lot of concepts covered in the video weren't covered before, and per your interest those could be critical or just details. I'm linking some more information about the concepts covered below.

Off-the-bat - the FreeNAS instance I'm running is not production/persistent. If you want to install and setup FreeNAS be sure to follow the recommended hardware specifications from iXsystems.
https://www.freenas.org/hardware-requirements/

More information about the technologies discussed are below.

  -  I talk more about this in the below video as well
  -  Very general here I'll try to cover the topic more in depth in a future video

Remember, while there is always more to know, most of the basics just build upon one another. Day-by-day, week-by-week, you will gradually learn the importance and competence of all these details. It takes time.

Essentially there is a multitude of ways to split up tasks and data running on a server, and also share said data between devices. FreeNAS offers a nice UI for interacting and setting up common services that have immediate value for home / small office users. Its services can help with data backup, file sharing, redundancy, cloud sync, and, with plugins and jails, has the ability to add more services as needed. 

One more video I hope to share is a short one. In the first video, I used the most open way to create a share on FreeNAS 11.3. However, a better practice is to ensure a specific user is set to the owner of that share, and then let users login using that account name and password.


Networking introduction


This video is a quick introduction about networking on computers. It covers some high-level concepts, such as packets, TCP/IP, IP addresses, DNS, DHCP, as well as some useful commands. Again since this is a Linux based video a lot of the commands are shown using Linux, though Windows equivalents (ipconfig, arp -a, and ping) are also covered.

This is truly just an introduction of key concepts, and omits more complex topics of setting static IPs, bringing up a network on a Linux server, and complex routing or detailed firewall permissions, etc. These are all important for IT administrator work and I am linking some more useful links below. 

References:
Networking is an important part of using computers and tech, and having a basic understanding is really critical to starting on more advanced projects. Like with the other concepts covered in this blog, I hope this is a good starting point.

Overview of operating systems - Linux compared


This is an overview of Windows, macOS, and Linux operating systems from a usage perspective. While the other videos have been using Linux for various tutorials, this video attempts to just offer more background about how Linux is crafted and why it has so many distributions. The ugly term is Fragmentation, which is true, but one could also look at that as choice and options.

Since this is only focusing primarily on the desktop, desktop user interfaces (UI) are also explained a bit, as well as highlighting useful features/commands for installing applications on Linux.

This is not an in-depth comparison as there are many many differences in terms of how the architectures, permissions, and code bases differ between each OS. I hope this at least offers some background as to how the flexibility of Linux can lead to some complexity, and how that complexity can be managed.

Some more sources for images and market share are largely taken from Wikipedia:
https://en.wikipedia.org/wiki/Linux
https://en.wikipedia.org/wiki/Usage_share_of_operating_systems
https://netmarketshare.com
(Note: there is a bit of variance in the numbers I show and the raw desktop numbers from NetMarketShare data, but there is a constant variance. Windows is still king of desktops, Linux rules in the server space and, through Android, the mobile markets as well.)

Introduction to Programming: Python, Java and Javascript

This is an overview of writing a basic converter program in 3 different languages, Python, Java, and JavaScript. I personally have used this as an exercise to learn new languages particularly the process of getting variables, manipulating them, and returning an output. These concepts will help with almost any program that you want to make in the future.


The video took a little longer to talk through than I anticipated, but 15 mins per language is hopefully acceptable. Again just something I hope can help people get started.

Source code:
Links to more information:
A few books and other sites that are helpful - Intro to Python, Learn Java in 8 hours, W3 schools, and more. Here are a few links. There are also countless tips and tricks just by Googling and searching through https://stackoverflow.com/.
Here as well is a quick video about how to setup the OpenJDK package in Linux. Alternatively, Windows, MacOS, and RedHat Distros can install from Oracle directly or at the above link.



GIMP tutorial



This is a tutorial about one of the most popular open source and free image editing programs around - GNU Image Manipulation Program (GIMP). It's a powerful image editing tool with paths, color management, and layers. While perhaps not 100% on the scale of Adobe Photoshop or Lightroom, it does offer a great deal of functionality.

GIMP is available on most desktop platforms, including Linux, Windows, and macOS. Hope the overview is helpful to get those with and those without any image editing experience started.

Download GIMP
https://www.gimp.org/downloads/


Learn more:
https://www.gimp.org/docs/
https://www.gimp.org/tutorials/

iPhone image source:
https://techupdatess.com/its-time-to-take-googles-pixel-phones-more-seriously-engadget/
(again not mine, just used for the tutorial)

Since GIMP has been around for more than two decades, a great deal more information is available. I hope this is a good first overview of the basics.

Open Source vs Free to Use

So as this content gets flushed out, I want to ensure that I'm clear with what this blog and videos series are and are not.

I chose Open Source Tech Training (OSTT) as a name because I hope in some small way, this can help your average user get over any fears or uncertainty about open source and free tools. That said, what I share, is my own experience and workflows, not all of which are 100% open source. For example, the introduction to GSuite or Google Docs is a way that I tend to use email and office personally, and professionally these days. GSuite is free to use to a point (create your Google account get 15 GB of space in their cloud) but would not be considered open source as the underlying code is not public.

So what is open source? Search in Google and a few definitions come up:
  • Open source - "denoting software for which the original source code is made freely available and may be redistributed and modified." - Google search result for "Define open source"
  • Open-source software "is a type of computer software in which source code is released under a license in which the copyright holder grants users the rights to study, change, and distribute the software to anyone and for any purpose." - Wikipedia
A couple of items needed are the software is free to use, but the code must also be freely available, and allow for other people to make changes. Lots of tools and services, like Linux which we covered, FreeBSD, or Signal Messenger, adhere to the standard of open source. Those with the knowledge and willingness, can go find the code (much of which is shared via GitHub), and can tweak, modify and help improve the code that is there. 

It's a community. Open source is built by both skilled developers and unskilled people looking to learn, spending time to improve code and projects. Many people will explain how they became involved and often it has to do with pure interest. Open source can also allow for a wider net of developers to work on something. While a corporation would have more control on direction for a project, it takes a lot of resources to create modern applications, including both the initial development and testing and debugging. Open source helps as anyone who finds a bug can report it and become involved in the process of fixing it, so for many smaller projects its a good way to get started to help iron out bugs and field test a software at least at its most basic level. 

Coming back to this blog and effort, I am no developer, and haven't been involved in the community aspects, though I have great respect for the people who have that knowledge. What Open Source Tech Training seeks to do is explains how to use open source and free software to handle common tasks. In that sense, I talk almost purely about the usage of these tools, and am not too concerned about the nuances of only using open source. Its really about finding what works for your workflow, and what we're focusing on is some tips and tricks to explore how these tools can be used.

Using G Suite and Google Docs



G Suite is the current term for the whole range of office / productivity applications that Google offers for free with your Google account. Beyond just Gmail, it includes the following applications:

  • Gmail
  • Docs (like Word)
  • Sheets (like Excel)
  • Slides (like Powerpoint)
  • Drive (cloud storage / file sharing)
  • Forms
  • Hangouts (messaging)
  • Meet (concalls)
  • Sites (your website)
  • App maker
  • Jamboard
  • and more...
G Suite when viewing their site is the business variant for enterprises and has multiple subscriptions. That said a standard Google account will also have most of these features, particularly all of the Google Docs, Sheets and Slides, so it is easy to get started. For more info about the professional version see here.

More useful links about getting started using Google Docs and G Suite are below:
Though not open source, it is very useful to get started with as most already know, and we'll be exploring some more cool features that it can do with Forms, Sheets and Scripts in a later tutorial.