Shell Tutorials
Squash Commits with Git
I'm not a git expert but I know enough git to get by, and surely know enough git to appreciate its ease of use over svn. A while ago I published some basic git commands to that go slightly beyond basic cloning and commits, and should handle most git interactions. Today's mini git lesson involves squashing multiple commits into one, allowing for easier pull request review and merge management.
OSX Lion Dock Dividers
One thing I hate is Tottenham Football Club clutter. I hate cluttered code, files littered on the desktop, and keeping files in my Downloads folder that I'll never need again. One place I especially hate clutter is my OSX application dock. I recently upgraded to OSX Lion and found that my old divider apps, which I used to separate related dock apps, were no longer acceptable. As you can imagine, I wasn't impressed. Luckily I found a great way to create dividers on both sides of the dock with minimal fuss and without the need for phantom apps!
Useful Git Commands
I've used git quite a bit but I don't consider myself a git expert, per se. I often find myself looking up the same basic commands so I thought I'd share them there so I'd have a fast reference, and maybe this will help you out too!
Recursively Delete .svn Directories
Version control systems are hugely important when it comes to development of all kinds. I'm a huge fan of git but sometimes I'm required to use SVN. Unfortunately I tend to forget to remove .svn folders when I copy and paste from a directory structure template. This, of course, leads to me overwriting files and results in mass confusion. I recently stumbled up an awesome command line script which recursively removes .svn directories from parent directories.
Fixing Python’s “Python Eggs” Error
Let me first state this for the record: I am not a server guy. The closest I've ever gotten to compiling my own versions of code is "sudo port install ..." So when I decided to teach myself Python (creating simply database interaction, record listings, etc) and kept getting "500 Internal Server Error" messages, I thought I was doomed. I opened up the Apache error log and saw this:
MooTools Forge / GitHub Plugin Structure Shell Script
One thing I love about the MooTools Forge is that it requires a strict structure for its plugins i.e. requiring a README.md file, Source directory, etc. I've created a shell script that I can run that creates the directory structure and files required to add my plugin to GitHub and then the Forge.
Run PHP Files From the Command Line
I've been brushing up on my shell scripting lately. I just got a MacBook and never felt compelled to spend too much time with Cygwin. I'm learning quite a bit now but there are still some tasks that I'd need to accomplish sooner rather than later. I know how to accomplish the task using PHP so I've got that to my advantage. What's awesome is that I can quickly and easily run my PHP files from the command line.
Automate YouTube Video and MP3 Rips with Bash Shell Scripting
I love listening to music while I code. Listening to music keeps me from getting too frustrated about code that isn't working (yes, it happens) or frustrations brought on by hosting providers, clients, etc. What I'll do is listen to Pandora, hear a song I like, look up the song on YouTube, and save the YouTube link in a text file for later listening. Having to go to YouTube every time sucks so I set out to take YouTube videos linked in a text file and download them to my computer in MP3 format.
Creating Git Aliases
I create shortcuts for everything. I create variables which act as text shortcuts, shortcuts in TextMate to generate CSS/JS/HTML, and bash scripts so I don't have to type in the same commands over and over again. So why should version control software be any different? I commit and push religiously so I create Git aliases to save myself a few keystrokes.
PNGCRUSH a Directory of Images
One easy way of reducing website load time is by optimizing your images. PNG graphics are often more bloated than they need to be so using PNGCRUSH should be a no-brainer. PNGCRUSH's basic usage provides only single-file-crushage but I've created a script that crushes PNGs in directories recursively.