One of the best ways to improve your craft of photography is by shooting film.
Analog photography allows you to focus on what matters: creating good photos.
Film cameras tend to be very minimalist,
removing the clutter on modern digital cameras.
Unless you are doing very technical photography, 1 
the shiny newest specs of a modern digital camera might just be a distraction to…
After over 7 years of off-and-on development (but mostly off),
I am finally releasing the first version of Tisp, the tiny lisp programming language.
Tisp is far from complete or being ready to use in the real world,
but I am now satisfied at the current state of features. 
 Before the idea of tisp ever formed, I worked on a shell interpreter called s .
It is a traditional shell…
Any beginners C tutorial will teach the basics of the C standard library’s
file reading functions (eg fopen ). The limitations of these interfaces is that they are designed
for run time reading, meaning that the file will be opened and read when the program is executed.
For most cases this is exactly what is wanted, often the file is only given at
run time by the user.…
At the start of the 20th century two new revolutionary and counterintuitive areas of
physics were being developed, quantum mechanics and special relativity. While quantum mechanics
describes the strange world of the subatomic with discrete energies, special relativity describes
the effects of moving incredibly fast: time dilation and space contraction (general relativity is
needed…

 
 
 

 
 I’ve used a mechanical keyboard for many years now. I currently own a
tenkeyless layout, even though as a programmer I almost never use the
arrow cluster or function row, so I to try the much more compact 60%
design. I also no longer care for the Cherry MX blue switches on my old board
since they are quite loud, so I went with MX clears…
C macros, while being extremely powerful when used correctly, can also be the
cause for a lot of unnecessary headaches if you are not aware of their
limitations. It is easy to view macros as just a fast shorthand for making
simple functions, but there are very important differences which need to be
addressed. 
 This post outlines some real life examples of macros I have come…
This article is based on research I did as a freshman undergrad, see the full project
here . 
 
 
 
 

 
 Proteins naturally fold into their lowest energy configuration, just like a ball rolling down a
hill to a lower potential. This folded structure gives proteins their function, similar to
how which lock a key can open is determined by its shape, not the…
derivation of the quotient rule 
 The quotient rule is used to take the derivative of a function with divided
expressions: 
 $$
\left(\frac{u}{v}\right)’ = \frac{vu’ - uv’}{v^2}
$$ 
 It is possible to prove this rule by utilizing the definition of the
derivative; however, this is not nearly as elegant as the following simple
proofs which use other…

 
 
 

 
 libsl is an extremely small library used to write better and clearer C
programs. The code was created by the suckless community, a small group of
C hackers and developers creating powerful yet simple programs for Linux
designed to be lightweight, configurable, and easier to maintain then the many
other unnecessarily bloated alternatives . You can…

 
 
 

 
 Like most things in Vim, the indenting (tabs) system is complex making it
extremely flexible so that it can fit any programming language or use case.
However, the commands and terminology can be confusing for beginners, this
post is designed to explain all the different commands and options needed to
fully control and customize tab’s size,…
body: 
 #!/usr/bin/env bash
 
 # body: print the body of a file 
 # 
 # if only two arguments are given print the file given by the first at the line 
 # number from the second. If a third argument is given print until that line. 
 
 if [[ $# == 2 ]] ; then 
 sed -n $2 p $1 
 elif [[ $# == 3 ]] ; then 
 sed -n $2 , $3 p $1 
 else 
 echo 'usage:…
calc: 
 #!/usr/bin/env bash
 
 # calc: preform fast calculations on the go 
 # 
 # Tired of having to open a new terminal, run `bc`, type the calculation, only 
 # to exit right after seeing the answer? Suffer no longer! Now just type 
 # `calc 2+2` and instantly see the answer! 
 
 echo ' $@ ' | bc -l


 browse : return selected file or folder 
 calc : calculator using bc 
 dwm-mode : change dwm window mode 
 m8ball : magic 8 ball 
 man : open man page in terminal 
 menu : select different programs or dmenu scripts 
 prog : launch program 
 quit : select logout, reboot, shutdown, or lock 
 todo : view, add or delete todos from a file 
 win : focus on an…
This is the place I use to store all my configuration files for programs such
as Vim, Bash, Tmux, etc. These files are only designed to be used on Linux. I
recommend you not to just copy whole files, but instead copy one line at a time
that you understand and slowly build up a huge file. This way you have a setup
that fits you best. 
 installation 
 Simply run make install…
echk: 
 #!/usr/bin/env bash
 
 # echk: functions to display shell error code 
 
 echk_color () { 
 # set color depending on if the last command succeed or not 
 if [[ $? -eq 0 ]] ; then 
 echo -ne '\033[0;32m' 
 return 0 
 else 
 echo -ne '\033[0;31m' 
 # need to return a value so that the other functions here will 
 # know if last command ran OK…
Easy way to create GitHub Gists through the command line. Simply give it the
files to upload and gst will return the URL to the new gist. 
 Options 
 -e ID 
 Edit previously created gist specified with ID 
 -d DESCRIPTION 
 Set gist description 
 -D FILE 
 Delete FILE from gist being edited 
 -f FILENAME 
 Set file name when reading from stdin 
 -g URL…
Simple ad hoc generation of Unix man pages from markdown files.
It includes customizations and ability to supply additional information or formatting needed for man
pages not found in traditional markdown.
For example, you can add a synopsis section from a command’s help message, convert the title
header into the name section, or add a description header before the first…
SYNOPSIS 
 nt [ -Dilvy ] [ -f FILE ] [ -e NOTE ] [ -d NOTE ] [ -t [ TAG ]] [ -n NUM | -NUM ] [ NOTE …] 
 DESCRIPTION 
 Simple note taker for the command line. To take a note simply run the command
with the new note as arguments or from stdin. The note will be saved to a plain
text file with each line being a note. The file is saved to the file either
specified with…
pub: 
 #!/usr/bin/env bash
 
 # pub: prepare post to be published 
 # 
 # Moves given draft into the posts directory and prefixes the filename with the 
 # date so that it is ready to be published. 
 
 if [[ $# == 0 || $# > 2 || ! -f ' $1 ' ]] ; then 
 echo 'usage: pub FILE [POSTDIR]' 
 exit 1 
 fi 
 
 date = $( date + '%Y-%m-%d' ) 
 file =…
sett: 
 #!/usr/bin/env bash
 
 # sett: set title of a terminal 
 # 
 # Change the title of any terminal window. If no argument is given it sets the 
 # title to the working directory, otherwise the supplied TITLE is used. 
 
 title = $1 
 if [[ -z $title ]] ; then 
 	 title = ' $( basename ' $PWD ' ) ' 
 fi 
 echo -n ']0; $title ' 

tg: 
 #!/usr/bin/env bash
 
 # tg: quickly tag files 
 # 
 # Rename files based on the given tag. For example `tg old file.txt` changes 
 # `file.txt` to `file-old.txt`. If the file already contains the suppied tag, 
 # it is removed. 
 
 if [[ $# ! = 2 ]] ; then 
 printf 'usage: tg TAG FILE \n' 
 exit 1 
 fi 
 
 if [ -z ' ${ 2 ##*.* } ' ] ;…