Skip to content

epidrome/dokey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 

Repository files navigation

dokey

real men do it with the keyboard -old unix admin saying

dependencies

topics

warmup

assignments deliverables references
set-up the main dependencies and demonstrate your base system change your command prompt with your student ID, list your dot files, display your shell configuration file and display system information (hardware+software) ls less nano source PS1 github guide neofetch
get familiar with basic commands, reading documentation and editing files browse and view files on your system man vim pacvim ranger lf bash guide error correction
connect to wireless network list available networks and connect to one that requires web login nmcli curl wpa_supplicant http-prompt
become productive with a todo list create a list of todos, edit, delete, and check some of them todo.txt todo.txt-cli task
check the weather fetch the weather forecast for your home city and one more city that you want to travel to wttr
fetch information read the business news awesome-console-services
try different text-based web browsers and get used to the keyboard shortcuts for one use your favorite text-based browser to retrieve information from the web lynx w3m links
manage your bookmarks add, search, and visit a bookmark to your favorite site buku
search the web from the terminal create aliases for common searches such as dictionary definition googler ddgr
twitter display your personal stream and that of your favorite person twitter
browse popular web sites through the terminal configure the browser environment to you terminal browser hacker news reddit BROWSER awesome-finder
read an ebook read, search, bookmark, and annotate your favorite ebook epr
manage torrent files search and download a torrent torque
edit a spreadsheet edit values and formulas sc-im
try a different shell change your default shell to zsh and configure it with auto-completions-suggestions and repeat some of the above chsh oh-my-zsh zsh-completions zsh-syntax-highlighting
surf the web create a new elvi surfraw
share your calendar share your calendar gcalcli
read the news with an RSS reader newsboat
batch image conversion convert your image files to different sizes and formats ImageMagick ufraw
track your expenses add a source of income and some expenses ledger
track your time with a simple journal jrnl
search the local file system search for your shell configuration file and open it for editing and search for the contents of a text file fzf skim percol
manage your music library import your music library, add tags and delete/add songs beets
visualize an mp3 demonstrate album art and visualizations with an mp3 player and various songs mpd kunst
visualize shell scripts create your own top alternatives with a focus to your own workflows sampler
organize your notes add (edit and delete) and link several pages org-wiki viki nb
create your final presentation three slides with your name-AM-github, checkbox list of deliverables done, and highlights of significant contributions and/or roadblocks mdp patat present
manage your academic bibliography import your bibtex formated bibliography, add, edit, delete an entry pubs papis
set-up a system for python development install and configure in a user folder a python project that is not available through the package manager python virtual environments
try different operating systems in the emulator load at least two operating systems without a GUI (only CLI) and create a virtual local network qemu freebsd archlinux alpine
set-up continuous integration build and deploy your static site and your cv dynamically every time you make a small change in the source files github travis netlify
download mp3 search, download and play (with the terminal) your favorite song of the month from youtube youtube-dl mpv
organize your notes with emacs use org mode emacs
text editor and plug-ins for code highlighting and autocompletion edit the vim or the shell configuration file and your report vim
organise the terminal window into multiple areas use one window to search-edit local files or browse the web and another window for performance monitoring tmux, glances
try different terminals and shells repeat some of the previous exercises with a different terminal-shell and create a custom configuration that fits your needs st mosh zsh fish
create a minimal linux system for a particular purpose gif of a VM with your custom (init, libc) linux system should boot to a terminal and include a set of tools that you really need (e.g., secure, minimal, aesthetics, libraries, etc) LFS suckless kiss linux init systems libc
create a docker image for your development stack demonstrate the custom image for CI of your cv and site dry dockly alpine

hci

assignments deliverables references
format your report use text formating tools to layout your final report for different output groff
create your own static site and blog generator with pandoc the generator should consider posts, pages, and templates bashyll pandoc+makefile
convert between different text formats use vim (or emacs) to write your report in markdown, track multiple formats with git and convert it to docx, html with pandoc pandoc git sed
use the terminal as an IDE edit your files (e.g., report, blog, code, etc) in vim or emacs and compile it in a different panel or use a plug-in latex vimtex spacevim doom-emacs make just tmex

cscw

assignments deliverables references
create a simple website with a static generator single page with name-AM-github and links to your asciinema deliverables jekyll hakyll nikola tclssg
read, write, and send email configure connections to mail server, display greek characters, display rich content, open links in text-based browser, store attachments, compose email with vim mutt EDITOR URLVIEW aerc
connect to a remote machine with ssh configure a remote machine to do all the previous tasks and connect to it through a simple local machine ssh mosh
send rich email with emacs filter and send emails with links emacs reading-and-writing-email-with-emacs
pair programming edit a text file together with a friend tmate
manage and share your dot files configure git, edit, push and pull your dot files among at least two different machines github guide rcm dotfiles stow yadm
transfer files to your phone send an image file to your phone qr-filetransfer
upload and share files transfer firefox send
use irc to chat with your friends create a room, invite friends, and chat weechat
back-up your home online create a back-up schedule cron rsync rclone
set-up cloud services ssh to a remote machine and demonstrate your remote cli user land (e.g., email, editor, cv, code, etc) OpenSSH Cloud Stack

visualization

assignments deliverables references
visualize git commits display your commits from a previous course, eg hci git-bars
generate plots create plots for your data from some other course or project clip
analyse web log files create reports similar to google analytics goaccess
use color to improve your cli tools Print colorized text from a shell script, in order to make it more beautiful-usable pastel
visualize your data demo with your git commits history and percipation data per day for the last month from your city spark
convert you cli to gui convert one of the previous python tools to gui gooey
create a cv build your cv with latex in pdf format, upload it, and track it with git lfs latex git lfs
visualize a large text file with a word cloud use a book from project gutenberg or from the daily news and mask the word cloud with an image that fits the theme of the book word_cloud newspaper gutenberg
visualize progress or status improve your favorite python cli app with a progress bar tqdm
give rainbow power to your cli python program visualize your code, tables, markdown, and programs rich
add icons to your terminal workflow icons-in-terminal awesome terminal fonts
test an alternative stack of tools set-up an OS image with a set of cli tools with minimal dependencies and a software licence that allows commercial use and selling freebsd jails
create a cli app for your favorite site the application should be similar to rtv, haxor from hci click

software

assignments deliverables references
send notifications to your desktop-mobile send a notifcation when a big task completes, eg download, compiling, etc ntfy
create notifications on your sever send notifications on important server events mqttwarn
create your own static site and blog generator the generator should consider posts, pages, and templates and have minimal dependencies, ie no pandoc bashblog jenny bashyll kiss linux blog
create an agent for news the demo should display the new content added on a news web site huginn
programmable voice deploy an application that forwards a call depending on a white- and black- list of phone numbers twilio-python
performance monitoring monitor the performance of your python scripts and visualize them with colors and/or spark lines py-spy hyperfine

manuals

The majority of cli tools include either a man page, or a short help (-h) screen. The following tools provide common examples about common tools:

tutorials

The assignments assume some basic knowledge and skills, which can be acquired promptly through the following tutorials:

references

The references in the assignments are only indicative and you are strongly encouraged to search for and evaluate alternatives. There are several resources that provide information about terminal and command-line applications, such as:

You Dont Need GUI

the art of command-line

terminal blog

inconsolation blog

awesome command-line applications

awesome shell

awesome bash

terminals are sexy

emacs is sexy

graphical user interfaces are good for 2 years old

cool unix tools

unix toolbox

Coderwall

cli guidelines

linux command line basics

unix as ide

unix for poets

About

⌨️ real men do it with the keyboard (old unix admin saying)

Resources

Stars

Watchers

Forks