Linux
Linux and Science
How NASA Designed a Helicopter That Could Fly Autonomously on Mars: “This the first time we’ll be flying Linux on Mars. […] The software framework that we’re using is one that we developed at JPL for cubesats and instruments, and we open-sourced it a few years ago. So, you can get the software framework that’s flying on the Mars helicopter, and use it on your own project.”
The Plot Twists: Some examples of using shell scripting, AWK, and gnuplot to generate real-time plots.
The Scientist’s Linux Toolbox: Figures from my article about free software for scientists published in Linux Pro Magazine.
The Scientist’s Linux Toolbox: Free software for scientists in Linux Pro Magazine.
git
The one true version control system.
A Random Walk Through Git: There are many Git tutorials. This one takes a different approach, diving below the porcelain.
Explain Git with D3: “This website is designed to help you understand some basic git concepts visually. This is my first attempt at using both SVG and D3. I hope it is helpful to you.”
Understanding the Git Workflow: “If you don’t understand the motivation behind Git’s design, you’re in for a world of hurt. With enough flags you can force Git to act the way you think it should instead of the way it wants to. But that’s like using a screwdriver like a hammer; it gets the job done, but it’s done poorly, takes longer, and damages the screwdriver.”
Git for Computer Scientists: Good summary of Git’s fundamental concepts, with diagrams.
This is how I git: From Daniel Stenberg, the chief developer of curl: “Every now and then I get questions on how to work with git in a smooth way when developing, bug-fixing or extending curl – or how I do it. After all, I work on open source full time which means I have very frequent interactions with git (and GitHub). Simply put, I work with git all day long. Ordinary days, I issue git commands several hundred times.”
GitHub Forking: One of the nicer guides laying out the workflow for forking a GitHub project and preparing a pull request for your improvements. But see the comments recommending merging the orignal master into your feature branch rather than rebasing your branch on top of master.
Pro Git 2ndEdition: Git is essential software. But there is a lot to learn. This highly regarded book is now out in a substantially updated version.
Deploying With Git: A good summary close to the process that I’m using.
Tech Talk: Linus Torvalds on git - YouTube: Torvalds’ talk at Google.
Amusing Bug Report: “gix-annex help is homicidal”
Understanding Git Conceptually: A guy on HN says this is the best explanation of Git ever.
The Unison language: “Unison is an open source functional programming language based on a simple idea with big implications: code is content-addressed and immutable.”
Picturing Git: Conceptions and Misconceptions: Master explainer Matt Neuburg brings clarity to the version control system that rules them all.
Subverting hierarchy with git: “Did you ever want to be able to tag your files, and use the tags to query and select the files you want? For many sorts of files we use, this is clearly better than being locked into a single hierarchial view of nested directories.”
“Git is a purely functional data structure”: This seems to be a useful mental model of the version control system git.
Using Git to manage a web site: “The HTML source for my (i.e., this) web site lives in a Git repository on my local workstation. This page describes how I set things up so that I can make changes live by running just ‘git push web’.”
Git Concepts With Diagrams: Detailed and patient job explaining the basic ideas and operations behind the version control system that I use for everything, using clear diagrams and careful explanations. See also this.
Gitlab: Open-source Github alternative.
New feature in Git 3: closures: How to preserve a branch in history while marking it as a dead end. We could use this in real life.
Git from the inside out: A tour of the inner workings of Git.
I live here.
Mutt 2.0 Release Notes: The only good email client I’ve ever used is now out with a major new release. New features include automatic reconnect to IMAP on error and tab completion of search patterns.
Email Authenticity 101: DKIM, DMARC, and SPF: “Email is at the centre of most of life and business, and so we must ensure it is trustworthy and authentic.”
Gmail Tampers with Outgoing Email: The gmail smtp server rewrites
From:
headers, in violation of internet standards.
System Administration
htop explained: “Explanation of everything you can see in htop/top on Linux”. But so much more. A superb article about Linux system administration.
Master Your Z Shell with These Outrageously Useful Tips: “If you had previously installed Zsh but never got around to exploring all of its magic features, this post is for you.” Quite clear and full of good code examples.
Why Learn AWK?: I really should.
Tools
inotify-tools: “inotify-tools is a C library and a set of command-line programs for Linux providing a simple interface to inotify.”
systemd-nspawn: Very detailed and useful tutorial about systemd-nspawn.
dwm
I use dwm, a tiling window manager. I don’t need or use “desktops” such as Gnome, KDE, etc.
dwmblocks-async: My custom build of dwmblocks which updates blocks asynchronously.: “A modular statusbar for dwm written in C. You may think of it as i3blocks, but for dwm.”
xandkar/pista-sensors: Data feeders for textual status bars (primarily pista).: Another approach to a dwm status bar that feeds data through pipes rather than relying on polling.
Estadobar: a simple status bar for dwm: Come and get it.
Hardware
Using Debian Linux on the Lenovo ThinkCentre M73: How to install and set up a real operating system on this tiny, super-inexpensive desktop.
Linux Developer Laptops: Dell’s Precision 5500 series reigns supreme: “About 6 years ago I gave up on Apple laptops and switched to Linux full time. When I’m at home, I prefer to work on a well-equipped desktop with a large monitor and one of my beloved Kinesis Advantage keyboards. But I am on the road a lot for work and so I need to do a lot of hacking on the go.”
Top five wrong ways to fix your audio: “The audio stack in Linux/Ubuntu evolves over time. What used to be good advice is not necessarily good advice anymore. (That also means, that if you happen to read this blog post in 2019 or something, don’t trust it!).” (Article from 2012.)
Linus Torvalds Likes the Chromebook Pixel: Since the Retina Mac Book Pro seems to provide more for less, and you can put Linux on that, too, it’s not clear from this article why Torvalds went with the Chromebook. Apparently he has some interest in the touchscreen, though the writeup suggests that he gets very limited use out of it.
More Linux
Linux Journal is Back: “As of today, Linux Journal is back, and operating under the ownership of Slashdot Media.” I’m happy to hear this. They regularly published excellent articles (including some of mine). So I look forward to interacting with them again, as a reader and a writer.
But what is it?: OK, but what is it?
HOWTO set DPI in Xorg: “Configuring a correct dots per inch settings for the Linux X display server will make fonts scale so they are big enough to be readable on modern high resolution monitors and it will also make other elements, in some programs, larger.”
Gmail Tampers with Outgoing Email: The gmail smtp server rewrites
From:
headers, in violation of internet standards.
Plotting tools for networks, part I: Check out my article on Dia and Graphviz in LWN. The sequel, covering TikZ and NetworkX, will appear in a few days.
A list of four special Linux distributions for kids:
I can see the brightness of curiosity in my six year old niece Shuchi’s eyes when she explores a mobile phone or manipulates the idiot box with its remote control or becomes creatively destructive with any other electronic device. She, like a lot of kids her age, love experimenting.
Plotting tools for networks, part II: Check out my article on TikZ and NetworkX in LWN. Learn how to draw network diagrams in LaTeX and analyze graphs with Python. If you like this content, please consider subscribing to LWN so they can afford to produce more of it!
Command-line Tools can be 235x Faster than your Hadoop Cluster: Informative demonstration of how to exploit the parallel processing inherent to shell pipelines.
Dia: The flowcharting program for Linux.
Linus Torvalds Interview: This Q&A on Slashdot is pretty interesting.
Bash shell completions for Julia: Bash shell completions contextually finish what you’re typing when you hit the tab key. This project tells the shell about Julia commands, to save you keystrokes.
rlwrap: I have not tried this yet, but others have found it useful in, for example, wrapping the gnuplot command line if you happen to be using a version compiled without readline support: “rlwrap is a ‘readline wrapper’ that uses the GNU readline library to allow the editing of keyboard input for any other command. Input history is remembered across invocations, separately for each command; history completion and search work as in bash and completion word lists can be specified on the command line.”
Distributing a Blender Render with Gnu Parallel: The author shows his shell script.
Remote Control of Spotify on Linux: Easy to set up and better than bluetooth.
The real power of Linux executables: Interesting and clear tutorial about the “executable” concept in Linux. With cool tricks!
The Debian Alternatives System: “The Debian alternatives system creates a way for several programs that fulfill the same or similar functions to be listed as alternative implementations that are installed simultaneously but with one particular implementation designated as the default.”
Multimedia on the Linux Command Line: wget, PdfTK, ffmpeg, flac, SoX.
welcome home : vim online: Vim online is a central place for the Vim community to store useful Vim tips and tools. Vim has a scripting language that allows for plugin like extensions to enable IDE behavior, syntax highlighting, colorization as well as other advanced features. These scripts can be uploaded and maintained using Vim online.
You Need a Middle Mouse Button: … but you don’t have one.
Portable configuration through ssh: Two approaches that allow you to bring your configuration with you automatically when you ssh into various servers.
Technical Writing with Pandoc and Panflute: Create an automated publishing pipeline by writing Pandoc filters in Python.
Why Linux: Amazingly similar to my own experiences and reasons for preferring Linux to OS X for my work.
GNU Parallel: Documentation from Compute Canada with a useful example (at #Running_on_Multiple_Nodes) of using Gnu parallel for distributed computation on a cluster.
The one bad thing about vim: Actually, two bad things.
Beyond the web: Gopher, Gemini, and the rise of the small Internet. My article appeared today in Linux Pro Magazine.
tcpdump is amazing: Julia Evans’ useful (and bubbly) summary of several network monitoring tools.
Linus Torvalds Likes the Chromebook Pixel: Since the Retina Mac Book Pro seems to provide more for less, and you can put Linux on that, too, it’s not clear from this article why Torvalds went with the Chromebook. Apparently he has some interest in the touchscreen, though the writeup suggests that he gets very limited use out of it.
nspawn: Detailed tutorial about creating and using systemd containers on Debian.
st: Although this terminal emulator from suckless.org is typically small and fast, I don’t use it, because it fails to redraw its contents after resizing. These days I’m using kitty.
Symbolic Mathemematics on Linux: My article on free and open-source assistants for mathematical manipulation.
Identifying aggressive crawlers using Go Access: “Aggressive crawlers that hit your web site a lot can cause performance problems.”
systemd for Administrators, Part VI: Good overview of chroot and systemd-spawn.
Ditching Windows: 2 Weeks With Ubuntu Linux On The Dell XPS 13: After finally realizing that the normal behavior of Windows is to torture and abuse its users, the author finds relative peace by switching to Linux.
inotify-tools: “inotify-tools is a C library and a set of command-line programs for Linux providing a simple interface to inotify.”
TeX Live and Debian/Ubuntu: “This page contains information on the Debian packaging of the TeX Live system, and on how to install ‘vanilla’ TeX Live on your Debian/Ubuntu system.”
A quick review of file watchers: “File watchers. I always forget about those and never use then, but I constantly feel like I need them. So I made this list to stop searching everywhere for those things which are surprisingly hard to find in a search engine.”
Plotting tools for networks, part I: Check out my article on Dia and Graphviz in LWN. The sequel, covering TikZ and NetworkX, will appear in a few days.
Huge number of sites imperiled by critical image-processing vulnerability: Imagemagick can be tricked into arbitrary code execution by fake image files. This is a big one.
Plotting tools for networks, part II: Learn how to draw network diagrams in LaTeX and analyze graphs with Python.
Rethinking text layout in Android and beyond: Knuth and Plass linebreaking algorithm part of the latest Android release.
Running full Linux on a Google Chromebook Pixel: Installation and usage notes for the 2013 model.
websocketd: “It takes care of handling the WebSocket connections, launching your programs to handle the WebSockets, and passing messages between programs and web-browser.”
Simple Setup for Let’s Encrypt: Making certificate renewal simple if you host multiple domains.