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.
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!
Click HERE to see the full list of topics covered!
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.
- Google script itself: Google Developers - Hugo Fierro
- Images in the website: Pexels.com
- this is a great site to find photographers and use images without the risk of copyrights - GDPR regulations https://gdpr-info.eu/
- Google's compliance with GDPR https://privacy.google.com/businesses/compliance/
- Other's take and understanding with GDPR compliance and privacy
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.
User groups - https://www.freebsd.org/doc/handbook/users-synopsis.html
- I talk more about this in the below video as well
Virtual machines (VMs) - https://en.wikipedia.org/wiki/Virtual_machine
- 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:
- Netmask and subnet tables: https://dnsmadeeasy.com/support/subnet/ This was actually somewhat glossed over in the recording, as the Gateway address - typically that of the router on the LAN would define the first 3 groups of numbers and the Netmask controls what level of variance is possible. For example - Gateway 192.168.1.1 and Netmask 255.255.255.0 means other IPs of 192.168.1.XXX (where XXX is 2~254) are valid, where Gateway 192.168.1.1 and Netmask 255.255.254.0 means other IPs of 192.168.1.XXX and 192.168.2.XXX are valid.
- Microsoft also has a pretty good description of the concept as well: https://support.microsoft.com/en-us/help/164015/understanding-tcp-ip-addressing-and-subnetting-basics
- More info on TCP/IP: https://searchnetworking.techtarget.com/definition/TCP-IP https://en.wikipedia.org/wiki/Internet_protocol_suite https://www.javatpoint.com/computer-network-tcp-ip-model
- Firewall setting details - using ufw on Ubuntu / Linux Mint: https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-18-04
- Firewalld (Red Hat, CentOS and Fedora):
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7 - Firewall rules in Windows 10 (note that the defaults for this are enabled with Windows Defender in the settings):
https://www.tomshardware.com/news/how-to-open-firewall-ports-in-windows-10,36451.html
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/.
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/.
- Chuck Severance, Python for Informatics, (C) 2009 - 2013,
http://www.pythonlearn.com/book_007.pdf - Ray Yao, Java in 8 Hours, (C) 2015, see on Amazon
Several other books around basic Java are also extremely helpful, but Ray Yao's book is a great way to start. - "JavaScript Tutorial", W3 schools, https://www.w3schools.com/js/default.asp
- Download Python from https://www.python.org/downloads/
- Download JavaScript JDK https://jdk.java.net/ <- in Linux this is available as a package in your package manager (Ubuntu/Debian distros: apt search openjdk)
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:
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:
- GSuite help https://support.google.com/a/users/answer/9282664?hl=en
- GCFGlobal https://edu.gcfglobal.org/en/googledocuments/
- Zapier Google Sheets tutorial https://zapier.com/learn/google-sheets/google-sheets-tutorial/
- Technology for Teachers and Students https://www.youtube.com/watch?v=OBITNezSmLY
- Prolific Oaktree https://www.youtube.com/watch?v=xJiUTXGv3PE
- Flipped Classroom Tutorials - https://www.youtube.com/watch?v=s6V_h43-BIY
Linux overview and introduction
This video is somewhat in depth on my thoughts about Linux and its background. For those of you just looking for how to install, feel free to jump to minute 35.
What we cover is a slightly more detailed overview of Linux, including how to get started and some things (like enable your firewall) to run when first installing Linux. Linux Mint is used as the example just because it is popular and has a more familiar user interface for people used to Windows.
For more information about the source material and references used, please see the links below. To download some popular Linux distros and find out more info about where to learn all the ins and outs of Linux, please check out the Quick Links in the sidebar.
Linux commands:
- http://linuxcommand.org/
- http://tldp.org/LDP/Bash-Beginners-Guide/html/
- https://medium.com/@duruldalkanat/bash-commands-guide-129c81cbfe87
Creating a bootable USB:
- https://www.pendrivelinux.com/liveusb-install-live-usb-creator/
- https://rufus.ie/
- https://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/
- https://www.balena.io/etcher/
Still have more to come, hope this is helpful.
Subscribe to:
Posts (Atom)