Update: A more recent Linux post with a few more Linux distros can be found here: Easy Guide: Good Linux For Your Home & Business.
Linux is gaining even more popularity these recent years, as evident from notebooks such as Google Chromebooks that run Chrome OS based on Linux. We can use Linux, Vim, and Git to take notes (more below). If Vim or Git is not your preferred choice, then Evernote with Chromium or Firefox browser on some Linux is also possible.
3 Linux distributions for beginners, programming, and old laptops
- Linux Mint – Overall good and stable operating system (Preferred)
- Fedora Python – Python-focused
- Puppy Linux – Older laptops
By the way, any decent Linux should let a user take notes, either with an app, via a browser/chrome extension, or at the very least with the terminal with an editor such as vi/vim.
- Vi enabled
- Full-fledged system
- User-friendly and working
Note: If in doubt or for beginners, I would recommend starting with Linux Mint, which works fine for Python programming as well.
Fedora Python For Classroom
- Not USB persistent
- Vim enabled
- Python-related applications including IPython and Scientific Python Stack
Note: This is possibly the only Python-focused Linux distribution I stumbled upon. Just as Linux Mint, the Super(Windows or CMD key) will bring up or display the Start Menu/programs or search bar. Here is an article on how someone re-purpose a laptop for his daughter’s scratch programming remote homeschool environment with Fedora Workstation distribution.
- USB persistent
- Vim not enabled, consider Geany IDE instead
- Chromium or Firefox not installed by default
- Lightest working graphical Linux tested
Note: Really old laptops would likely benefit more from this, especially those that only support 32-bits. Puppy Linux is much lighter as an operating system in comparison, but the trade-offs are the lesser user-friendly programs and aesthetic display in my opinion. Those interested may take a look at DebianDog for more than 5 other very small Debian Live distributions similar to Puppy Linux.
What can you do with Linux?
Basically what any normal computer should do in general. However, that does not include proprietary software that is only available on other operating systems such as Keynote and iMovie on Mac OSX. Linux Mint should support web apps such as Evernote.com and Chromium (Google’s open-source browser code that made Chrome) extensions. Some useful Linux applications:
- Inkscape – Vector art
- Gimp – Rastor graphics manipulation
- Blender – 3D modeling and animation
- Sublime and Vim – Text and code editors
- Programming IDEs – Pycharm and Visual Studio Code
- Calibre – E-books library management
- Spotify – Digital music service
- Banshee – media player
- Audacity – Audio editor
- Chat – Skype and WhatsApp (unofficial)
- Educational – Anki flashcard, Gcompris games for kids, Tuxtype typing tutor game, Jupyter notebook for interactive computing, Scratch for kids’ programming environment, Arduino for AVR development board IDE etc
- Piano Booster – Boost piano playing skills
- Internet – Chromium, Firefox web browser & Thunderbird Mail
- Office – LibreOffice Writer, Calc, Draw, Impress, Math, Base
- Maps and planet exploration – GNOME Maps and Google Earth
- System Restore – Timeshift
Note: These are application programs that are already or can be installed from the Linux Mint software manager.
How to install Linux from a Mac OSX with a pen drive?
- Choose and download a Linux Distro ISO file (An x86_64 file worked for my old Fujitsu notebook).
- Plugin a USB pen drive (preferably 4GB or more. Some bistro such as Puppy Linux less than 500MB is possible too). Be prepared to erase your pen drive.
- Install and run balenaEtcher to flash your USB pen drive
- Plugin the USB pen drive into the system to install. You may have to configure your BIOS to boot up from USB (in my case, Fujitsu notebook is F12). Be prepared to wipe out the hard disk to install a new Linux system unless you have a LIVE Linux distribution for testing purposes or with the persistent feature.
Note: It is also possible to install multiple Linux distributions on a USB pen drive with for example a multi-boot software on Linux, but that may not be advisable as ultimately you are mostly to just want to work on one good Linux distribution and get accustomed or master its shortcuts and intricacies.
Like Vim, I think the power of Linux lies with the mastery of keyboard commands for fast and effective execution. One can accomplish common computer tasks such as internet research, writing, and programming on Linux. You may wonder how to perform certain basic Linux tasks ranging from switching tabs in Chromium, start a terminal to shut down the computer with keyboard shortcuts.
Highlights of 13 useful Linux Mint keyboard shortcuts:
- Ctrl + Alt + T Open a terminal
- Ctrl + Tab Switch to next tab in Chromium
- Ctrl + w Close a tab
- Ctrl + T Open a new tab
- Super(Win) + Tab Switch to next application
- Super(Win) Search applications
- Super(Win) + D Minimize all and Show desktop
- Alt + F4 Close application
- Ctrl + c Copy text
- Ctrl + v paste text
- Ctrl + Shift + v paste text in VIM
- Ctrl + Alt + Left/Right arrow keys Navigate to next workspace (4 available)
- Ctrl + Alt + End(or can be right arrow key with Fn on notebooks) Shutdown
For example, one can press Super(Win/CMD) key or Ctrl + Alt + T to start the terminal, then type vim and enter to start without using a mouse click. Also, these 82 shortcuts that includes general and screen recording may be helpful to beginners.
More terminal and Vim useful shortcuts:
- Tab to complete your typing for filenames and directories in a terminal. This is handy especially when filenames and directory names are long.
- Ctrl + l to clear the terminal screen or type clear and enter
- less file_name and enter in the terminal will display the content of a file with PgUp, PgDn, Up/Down arrows for navigation
- Ctrl + o followed by only one Normal mode command in Vim to save time from Esc every time you want to e.g. move to the end of the line
- :w !pbcopy and enter to copy the visually highlighted text to paste into Mac desktop text editor with Super(CMD)+v. Alternatively, gg*+yG works for copying the entire file too
- ma (Normal mode) to quickly bookmark and `a to access back that bookmarked location
- :w | !open % to save and preview current HTML file
Vim on Linux Mint
If you cannot run vim properly on Linux Mint for the first time, please apply these few commands in the terminal:
- sudo apt-get update
- sudo apt-get install vim
- alias vi=“vim”
Vim for Python programming
- Install jedi-vim
- When you press . the available methods will appear soon. You may have to wait a while the first time.
- Ctrl + p for names completion
- Saving the files will display available errors
- Execute or run the python file in at least 4 ways as below.
Vim for programming is advantageous as it loads fast and the amount of time saved while waiting will be more evident for daily programming over the years and for those who have to often code different projects, and even simultaneously. For example, programmers can load each project in its own terminal and virtual environment. One might still wonder if there is any other clear benefit to vim when there are other full-scale graphical IDEs and gigabits of RAM is a norm. Not only does Vim load fast, but in this current age and technological stage where big data for machine learning is becoming more prevalent, it may also be a good idea to reserve more memory for loading large data sets.
Jrnl for Linux
We can also install a human-friendly program on Linux for creating notes or journal entries. It is a powerful way to take notes quickly and efficiently on limited hardware resources e.g. old Linux laptops. In fact, any laptops that can boot from a Linux pen drive can contain the Jrnl’s YAML database. Please read Jrnl: How To Take Fast Notes In Command-Line.
How to create a virtual environment in Python 3?
A virtual environment is like a placeholder or collection of different python packages to be installed and specific only for its project. As the number of projects increases and each different with its required packages, one may begin to appreciate the necessity of virtual environments for the separation of packages collection. Optionally, git clone a directory first before creating the virtual environment and then only git push necessary files. Below commands should work for Mac or Linux.
- In the directory created, type python3 -m venv venv and enter (Python3 should already be installed).
- To activate this virtual environment, type . /venv/bin/activate and enter (use the tab key to autocomplete).
- Any python packages installed henceforth will only apply for this virtual environment. For example, type pip3 install pyjokes and enter.
- To deactivate this virtual environment, type deactivate and enter.
4 ways to run or execute a Python file
- (Preferred method) Press Ctrl + z in Vim normal mode to exit temporarily and execute the python file from the terminal, and return to Vim by typing fg and enter. This method can execute the latest changes without having to explicitly save file first.
- In normal mode type :!python3 file_name and enter. Repeat with @: and subsequent @@ for convenience repeat runs.
- The third is to open another terminal window for Python file execution and switch between Vim windows by pressing Super(Win) + Tab.
- Fourth is to split the screen with a terminal by applying :term. Switch between the windows with Ctrl+ww. Close a window with :close. Quit the terminal window pane with the exit command.
How much memory and CPU are needed for Linux?
I tested these 3 Linux distributions to be working on my old notebook with 4 GB ram and processor Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz. I am writing this paragraph with Linux Mint (2.2GB iso file size, Ubuntu-based), and running fine. Fedora Python for the classroom (1.8GB, Red Hat-based) and Puppy Linux (345MB, Ubuntu-based) should require even fewer resources. In Linux, to display processor information, type this in the terminal cat /proc/cpuinfo. For memory, type free or cat /proc/meminfo.
Why Linux and not Windows or Mac?
- Lighter and faster
- Growing popularity and plethora of applications too
- Ease of installation
It used to be that Linux was cumbersome or buggy to use for terminal and graphical interface users in general. However, it came a long way, and thanks to developers around the world, it has become not only an open-source or free major distribution but also a relatively stable and reliable one, that even servers are running with it.
Not only that, but Linux can also be lightweight in terms of disk space and memory requirements and boots much faster even on old laptops. For example, you may be better off using a Linux system if you are usually using the same graphical or more intensive applications available on Linux or as a stable server as well. For example, my old Fujitsu laptop can run Linux Mint well, but Windows 7 is slow or seems to hang just with basic backup and essential productivity applications. One might also want to consider taking greater advantage of the command line powerful applications such as Vim, FFmpeg, and ImageMagick in a Linux system.
Linux systems and applications are surprisingly quite resilient and reliable, or as good as any world-class system can get. From the same Unix family as the Mac system, one may expect fewer major bugs or security patches than Windows, which is why Linux and Mac users may tend not to focus on anti-virus software.
There is a growing number of applications that have a Linux option for installation as well, and these tend to include the popular ones as well, including Blender, Gimp, VsCode, Pycharm, LibreOffice, Chromium, etc; Just scrolling through the software manager list can seem overwhelming. And there are even more in addition to what one can do with terminal command line prowess. Windows used to have the most number of applications but there is an increasing number of Mac and Linux apps as well. Linux is gaining mainstream popularity and more so now that the end system is more usable and user-friendly. Linux continues to rollout continuous updates and improvements, for example, Linux Mint recently just released Linux Mint Debian. An operating system is only as good as the work done on it and it is not hard to imagine how much farther Linux can go with the ever-expanding number of developers and volunteers willing to spend their time and efforts rooting and improving Linux.
Linux can also be easy to choose and test out before deciding to install which is also quite straightforward. One just has to download and burn a Live ISO into a USB drive from a reputable distribution such as Linux Mint and boot the device from it. From then on, one can opt to wipe out and install into the device hard disk only if one is satisfied with the demo. Windows may come installed or with a trial registration period while Mac only has the working version.
Personally, I am running Linux Mint on my old notebook and this is probably the right choice for general and programming usage with Vim at the moment. I have no need for Visual Studio Code or Pycharm on Linux since Vim seems sufficient for its purpose, plus Vim on Linux is probably the lightest but yet most efficiently acceptable programming or writing environment available e.g. names completion, syntax coloring, and access to run Python files. Vim is pretty powerful and efficient if you know how to use it well, and using it on Linux makes it even more so without the extra huge memory overhead. I still use Evernote for notes but I certainly can appreciate the power and benefits of note-taking in Vim and storing them at Github, especially when large files are included and/or syncing between old and modern computers. Github may well be the future for codes and text cloud storage, in addition to versioning and multiple authors and contributors support.
Please note that Linux, unlike Mac OSX, users may find external program installations difficult or even buggy and time-consuming to fix them. So if you new to Linux or just switched over from Windows 7, just stick to the mainstream for usage. For example, it is better to use a major and popular Linux distribution such as Linux Mint, install programs from the software manager or use Evernote from a web browser instead of looking for unofficial and unsupported workaround apps.
Is there another major Linux distribution?
How fast is Linux?
Speaking from experience using my old Fujitsu notebook as an example, Linux Mint probably booted and operational within a minute or 2 and applications are launched quickly or within an acceptable time limit. Moreover, Linux Mint is not even considered a lightweight derivative of Linux such as Puppy Linux or Lubuntu. It was previously running Windows 7 and the booting is noticeable much longer, and launching applications is slow. Even iMac 8 Gb memory of much better specs seems to take longer to boot. Indeed, Linux has made my older notebook usable with ease again, thanks to Linus Torvalds and other developers; The above Linux screenshots are captured with it. Also, Linux is stable.
How to use Github for note-taking in 5 simple steps?
Somehow Linux, Github, and Vim seem like natural elements for note-taking, as simple or advanced as you take it. Please bear in mind this guide is intended for beginners who are learning and using basic Git for themselves only. Although there is a graphical app for git, I recommend learning the command lines traditional method of git usage for possibly the quickest way to get things done and the mean to work on your notes even on old and slow laptops as long as they have an internet connection.
An easy guide on how to use git for notes in 5 steps:
- git clone xxx (please copy xxx from GitHub after a new repository is created, see below, Then change directory into the newly created directory.)
- git add . (When you have a new file or change, this command will will add all files. You may replace . with an individual filename)
- git commit -m ‘a relevant message’ (This is akin to “boxing-up” your added files for delivery, and it is a necessary step)
- git push (This means pushing or uploading to the server or cloud where our codes or files are stored, once pushed your files are safely stored away)
- git pull (for syncing and downloading stored content from Git server)
Just understand and memorize these 5 simple commands and you should be fine with simple git usage. Git status command can also be used to check our current git status. Please feel free to use this as a foundation or base if you will as a jumping board to more advanced Git mastery. Please note this simple guide is not about adding, removing, or reading attached git notes of existing files. That topic can be found here if you are interested to explore it.
Why Git for note-taking?
Basically, the 2 biggest benefits that come to mind for notes on Git:
- Easily sync notes across different platforms
- Reliable storage with no worry of normal storage limitation
We may use Google Cloud or Dropbox for notes or file sharing across platforms and users, but I find git for files access between computers could be even faster and more productive with just terminal commands.
Git storage limit?
- Each repository storage limit is 100GB, and there is no limitation as to the number of repositories one can create
- Every repository can be saved as public or private
- Moreover, large files such as videos and audio samples can be stored externally with Git Large File Storage
Can I set my Github notes private?
Yes. Under settings in your Github repository, you can choose to do so or even archive or delete it. A new repository is public by default, so you may wish to take note of this.
Why and how to use vi/vim for note-taking?
Markdown for note-taking?
If you are not a programmer but would like to use Vim for taking notes or even blogging, a good alternative is to learn the markdown format for simple writing. Please view Markdown Editors For Note-taking which includes a markdown quick guide.
How to preview live HTML and CSS?
Brackets is an excellent free open-source HTML and CSS editor, that supports Emmet (abbreviations expansions with Tab key on Mac i.e. html:5 or div followed by Tab. Install by going to File -> extension manager and search for Emmet to install), dark theme mode, and font size under View -> Themes menu, live preview of HTML or CSS modifications as you edit away, and even highlighting of the relevant code portion in the preview page.
Live preview is important because like others, I spent some time just troubleshooting why the HTML codes are not working as expected while it was just the browser cache not refreshing to the latest changes. One may be fine with opening the browser in incognito mode repeatedly to view the latest changes, but based on personal experience I do not recommend that. Brackets is pretty straightforward, start by opening the folder as the project directory and it also continues where you left off upon launching. HTML has auto-completion for filenames and CSS has syntax completion with numerous colors preview.
For Linux Mint, download the latest version from Brackets and install it by clicking the downloaded file (do not install from Linux Mint software manager) to avoid the probable unexpected problem of the browser not launching for preview. Click File -> Enable Experimental Live Preview before Ctrl+Alt+P to launch the browser for live preview. Installing for Mac is just downloading and running the dmg file from Brackets, CMD+Alt+P to launch the browser. Brackets launch quite fast for a graphical application so it promotes productivity for frequent users.
Commenting and uncommenting is quite easy with the same command: Ctrl+/ on Linux and CMD+/ on Mac for a single line or highlighted lines.
Tip: Type html:5 and tab key with entering for Emmet to automatically expand out a bare HTML template that includes doctype, head, meta, title, HTML, and body tags.
Alternatively for those using another editor that may not have a consistent browser preview (and requires saves and reloads) i.e. Vim to edit HTML, I suggest getting Browsersync, also another open-source project, for browser testing though I still recommend Bracket for a better HTML and CSS experience. However, I still recommend Vim for programm1ing i.e. Python, after some testing with Brackets extensions for Python support.
How to auto-reload changes made to Flask or any other local HTTP servers?
Browser-sync can actively monitor changes made and reloads accordingly. Do remember to save your files to display the latest changes, even more than once. This can matter if somehow your changes are not or inconsistently displayed in the browser. These steps can help if the latest changes are not properly displayed with the flask run command in a Chrome browser.
- Open a terminal and start Flask or another HTTP server
- Open another terminal and start browser-sync for watching all files in all directories and browser should reload for latest changes once a file is saved
- Open a third terminal if using a terminal editor such as Vim to edit files
- View your HTML files in Firefox (and not Chrome) if editing CSS
If you are using a flask, start it in development mode so it should reload when code changes in theory. Loading to watch the latest changes may sound simple, considering solutions such as Brackets that can display the browser with instant HTML and CSS changes. However, it may not be as straightforward when developing with a web server such as Flask. The problem I encountered is with the browser not refreshing the HTML or CSS file changes.
Tip: Did you know you can also run a rudimentary python HTTP server with a port that you designate i.e. 8000 simply with this terminal command (assuming python3 is installed)? $python3 -m http.server 8000
To cut the story short, I found this the more satisfactory solution after spending time testing to have the browser loading correctly every time a change was made and saved to any files in the current and subdirectories (as opposed to opening a new incognito window which is repetitive and seems unreliable anyway). Thanks to a StackOverflow answer for highlighting the syntax to watch all files and with a modification, one can work with a robust solution to auto-reload a Flask server:
browser-sync start –proxy “localhost:5000″ –files=”**/*”
The parameter —proxy localhost:5000 sets browser-sync to watch the default Flask URL port. Browser-sync will load localhost:3000 in the browser which is actually pointing to localhost:5000. This should also work with other types of local servers by replacing them with the relevant port. And -—files=“**/*” will basically monitor all files including python, HTML, CSS.
The last step is to view the HTML files in Firefox but not in Chrome browser if you are also editing CSS is important as well because I have to keep saving the unchanged CSS file whenever a change was made elsewhere before the Chrome browser can display properly. With Firefox and browser-sync, it can be a more robust pair for front-end with back-end web development. For more information on Firefox with CSS, please view the below video.
How to take screenshots and other keyboard shortcuts on Linux?
Essentially, press Fn and Insert keys together to take a screenshot of the desktop, and following there should be a prompt for saving the file. For example with the photo below, you may already notice there is a box outline around the word Fn, and for the word Prt Sc (Print Screen) under the Insert key. That means we activate the function enclosed in the box by pressing the Fn key first without releasing and then a corresponding key on the keyboard with a boxed wording.
Alternatively, Shutter (which can be installed from Linux Mint software manager) is a feature-rich screenshot Linux application for those who wish for more than just the screenshot basic.
What other Linux distribution did I tested or checked out?
I recently tested the Porteus Linux as an alternative Puppy Linux. The installation was not quick and easy like flashing an iso file with the balenaEtcher app. A save file has to be created for the file system so the session can be saved into the USB drive (not sure it was working). There was no browser so the Slackware package manager database had to be downloaded, however, it ran into a segmentation fault at that point. In short, the idea here is to install popular and well-received distributions such as Linux Mint / Fedora instead.
I also checked out ElementaryOS and Feren OS (evaluated from a YouTube video) as well for their user-friendly interfaces. However, Reddit or Distrowatch feedbacks are not entirely positive. Again, most users, especially beginners, should follow mainstream popular distributions such as Linux Mint to avoid unwanted surprises.
What if I do not wish to download Linux myself?
Just shop and get a Chromebook, Linux USB sticks and ChromeBit can be a good idea for some.
Affiliate links are included.