One thing that you may want to do with LaTeX is write handouts for your classes. This imposes particular constraints on you. In particular, you want the handout to only be one page (or two sides). Now, LaTeX’s standard margins are rather generous, and the spacing it puts between items in lists and between section headings and body text are all likewise rather generous. And with good reason: it doesn’t do to make things too cramped. But for this particular purpose, it might be desirable to squish things just a little bit. So let’s look at some ways to do that.
I won’t be too judgemental in what follows, but just remember: only make what modifications are necessary. White space is normally a good thing.
The easiest and quickest way to fit more on a page is to go to a two column approach.
\documentclass[twocolumn]{article}
\setlength{\columnsep}{2em}
This makes your whole document two columns. For more control you might want to use the multicol package to only have some parts in two columns. You can adjust the \columnsep length to suit. I find anything less that 2em a little cramped, but if you’re really pushed for space you could change this.
\usepackage[margin=1in,top=1.5in]{geometry}
Here’s another easy trick that’s easily abused: change the document’s margins! The geometry package allows you to modify LaTeX’s default generous margins in a very simple way. For example, here I have set all margins to one inch, and then modified the top margin to be slightly larger. You can likewise change left,right,bottom margins separately. This is a powerful package that allows much more involved changes, but for now, let’s leave it at that. If you use the KOMA script classes, they have their own package with much the same functionality as geometry called typearea
\usepackage{enumitem}
\setlist{leftmargin=*,itemsep=0pt,parsep=0pt,topsep=.5\baselineskip}
Are your itemisations and enumerations taking up too much room? enumitem to the rescue! This package allows you to change many details of your list environments. Here I’ve just made spacing very minimal. Personally, I think this is too cramped, but if you really need the space, this is one way to do it.
Now, that pesky title is taking up altogether too much room. We can use the titling package to fix that.
\usepackage{titling}
\pretitle{\noindent\Large\bfseries}
\posttitle{\\}
\preauthor{\itshape}
\postauthor{}
\predate{\itshape}
\postdate{}
\setlength{\droptitle}{-1in}
This package completely redefines the way the titles are done. So we can just make a very minimal looking title by specifying what code we want before and after each of the title elements (title, author and date). The above example just sets the title large and bold, and the author and date on the next line in italics. Takes up much less space now. The \droptitle is the length of space above the title. I’ve made in one inch less than the default to save more space.
Finally, and this is by far the least intrusive and damaging modification, we can change the amount of space the section headings take up.
\usepackage[small,compact,sc]{titlesec}
The titlesec package has already cropped up in a previous post of mine. But this time, we’re just using its package options method for modifying things. This is much easier than getting into the nuts and bolts of how to change the section headings individually. The small option makes the section heading text smaller than normal. The compact option reduces the vertical space the headings take up. The sc option sets the section headings in small caps. I did this just to differentiate them from the title text, which is now of a similar size.
OK. That concludes this brief primer on breaking LaTeX’s sensible rules on how much stuff you should fit on a page.
Post script
Since writing this, boumol pointed out that the savetrees package does a lot of the same things I achieve, and indeed goes further. For instance, it modifies the letter spacing and leading (the space between lines). To quote Bringhurst: “in the world of digital type, it is very easy for a designer … with no regard for letters to squish them into cattle trains and ship them to the slaughter. When letters are maltreated in this way, their reserve of legibility is sapped. They can do little in return except shortchange and brutalise the reader”. savetrees does some other clever things like making LaTeX try harder to not have a paragraph end with a single word. You can, of course turn off the genuinely brutal things the package does, and keep the less brutal ones.
I think the above tutorial serves, in part, as one way to achieve some squishing. But more broadly, it serves to point to some good packages for modifying the style and layout of the page more generally.

Try the package “savetrees” (this is the best way to save space, perhaps too much)
Ah yes. I’d forgotten about that package! I’ve never used it myself. I’ll explore adding that to this tutorial. Thanks!