December 16th, 2011
Interesting Reads
I've been contracting since the beginning of the year and decided to go
full-time with it this July and work really started to get the better of
me. During the last 2 months, I haven't posted much, but have finally
made some room to begin anew. Here are some stories I've read that I
haven't had time to post, but that I thought my readers might find
interesting:
What's In A GIF
-- I recently had to implement multi-frame GIFs in PHP and found
this byte
by byte guide pretty helpful in understanding how GIFs work.
Parenthood by Jeff Atwood
-- Mirrors a lot of my own feelings about being a geek dad.
Google+ Style Buttons
-- A great and thorough set of Google+-like buttons and styles to
match, if you're into the Google+ look.
High Performance PHP Session Storage at Scale -- Great post about using PHP sessions from a memcache layer rather than
from disk, because disk doesn't scale well.
PHP Advent 2011 -- The PHP Advent site is live
for 2011, lots of great reads already up, too many to link to them
individually.
That's all for now. Hopefully I'll return to my previous blogging schedule after
the weekend.
October 14th, 2011
This WebGL music video is amazing. Great song by a great artist as
well. I can't believe we've come so far in so little time.
October 10th, 2011
Show git branches that haven't been merged
Quick tip on how to show your git branches that haven't been merged yet.
git branch --no-merged
Very useful when trying to clean-up after a long week of developing many
features in tandem.
October 7th, 2011
Now on GitHub: gmail-biggestfiles
I generally tend to write short scripts for a one time task. Gmail-biggestfiles was born in that same vein. Then the other day, a colleague was commenting on how he wanted to find the biggest files in his GMail account and remove them, since he was running out of space.
Thus, I put this up on GitHub. He said it was "too slow", and so I refactored it to use imap_sort rather than imap_fetch_overview. This is why sharing code via GitHub is profoundly useful in my eyes, quick feedback and interations.
Hopefully someone finds it useful as well. It still can be a bit slow on large mail boxes, but it's offloading all of the sorting to the IMAP (Google) server now.
You can find the code on GitHub, feel free to fork it and make it faster if you feel the need.
Note: it's required that you have imap extensions installed alongside PHP, and IMAP access turned on in your GMail account
October 6th, 2011
Edit a MySQL command from the $EDITOR
When using MySQL from the command line, you can get into a pretty long
SQL statement, and then realize you wanted to change something. For
example, a LEFT JOIN to an INNER JOIN. Well, MySQL has a handy little
function for making it easier to edit a long command. Much like the
Unix command 'fc', which I've written about
before, you can use your defined $EDITOR
environment variable to be edit your previous SQL statement. At the
MySQL command line:
mysql> \e
This will pop open your defined $EDITOR and allow you to edit the
command. After editing, save and quit (:wq for you vim users), and just
type a semi-colon (;) and hit enter. It will run whatever command
you've written into your editor. Voila!
October 5th, 2011
mysqldump and gzip one-liner
I frequently download mysql backups from our production environment (at
off hours of course) to do testing with actual data. As a force of
habit, I've always just mysqldump'ed the data and then gzip'ed as two
separate commands.
Here's a one liner that I've started using instead.
mysqldump <mysql_options> | gzip -9 > file.sql.gz
Note: the -9 in the gzip command is the compression level, 9 being the
maximum compression
October 4th, 2011
How To: Revert a merge (by resetting to what is on a remote repo)
I generally do (as a force of habit) my integration testing on my master
branch. I'll typically look at the change on GitHub and if I see
something amiss, I'll denote it and move on. Every once in a while, I
can't tell just by looking at the code, or have a suspicion that
something will break but want to make sure.
In these cases, I generally am at a stopping point. (E.g. I have all my
code checked in and pushed). In order to reset my local copy back to
what's on the origin server, I do the follwing:
git reset --hard origin/master
Origin being the remote that I want to pull from and master
being the branch.
October 2nd, 2011
I was actually thinking about something very similar to this when it
popped up on HackerNews. I may port the gitserve to python before I use
it, and if so, will gist the code.
September 30th, 2011
Full stack-payments. Saw it on HackerNews. Looks pretty easy to
integrate, now I just need a project that needs it.
April 16th, 2011
Masters of Doom
I've been reading Masters of Doom, which is a very inspiring book for a developer such as myself to read. I came across this quote attributed to John Carmack, founder at id Software and one of the subjects of the book, and it really resonated with me.
The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.
March 22nd, 2011
I’m also addicted to analytics...
I read this (lengthly) post on RailsTips.org and it got me thinking. I am also pretty obsessed with numbers, whether it be benchmarks or web traffic.
I've spent the majority of the day (when not coding) looking at Mozilla's Glow visualization (Firefox 4 downloads), and reading about how it works.
Are you an analytics junky as well?
March 3rd, 2011
Useful Unix Commands: fc
Slowly becoming my favorite, my Useful Unix Command of the moment is: fc
fc allows you to open the last run command in an editor. By default, it will open with the editor set up in $EDITOR (vim for me).
If you have ever had to type a really long command out, and missed something, or wanted to run it for several more files, fc is very useful as it opens in Vim ($EDITOR) and then, upon closing, will run the command again.
This command works on most Linux systems, Unix systems and on Mac OS X. Give it a try.
Februrary 28th, 2011
(Mac)Vim Tip: Configure MacVim to start without the Top Toolbar Expanded
I figured I'd share this one:
To remove the MacVim top toolbar, set this in your .vimrc file:
set guioptions-=T
And never have to close that toolbar again.
February 27th, 2011
Just watched: Exit Through the Gift Shop
My wife and I just watched Exit Through the Gift Shop, a hilarious documentary by Banksy, which to my surprise was not as much about Banksy as I would've thought.
If you are in the mood for a documentary, you can not go wrong with this film. Go. Watch it.
P.S. It's available on Netflix Instant Streaming as well.
June 6th, 2011
Git submodules are awesome
Recently, I've switched all of my personal repositories over to Git from Subversion. When working on personal projects in subversion, I've always included some base functionality (my own boilerplate, if you will). These include my Zend Framework Authentication wrapper and controller and Smarty template wrapper, as well as some simple configuration files that these modules rely on. I've always used svn externals for these but I have to say that the git submodule system is making me smile.
For my own future reference, he is how to use them:
Adding a submodule:
git submodule add user@host:~/path/to/git/repo.git path/to/check/out
git submodule init
This will add and then initialize the repository under your current project. If the path doesn't exist, it will create it.
Updating a submodule:
The following will update the submodules under your current project.
git submodule update
If necessary, you can also go into the directory and perform the usual git tasks, since it is its own repository.
Have fun with git submodules!
September 19th, 2011
I echo Adam's message in this post. I too have been guilty of working
long hours much to the chagrin of my family and his story stands as a
reminder to me that I can always get another job..
September 18th, 2011
Mac OS X: Change your hostname
Here are two ways to change your hostname in Mac OS X.
The first, open a new terminal and type this:
sudo hostname <new hostname>
Note: You will be asked for your password, because you are performing
this command as root
The second, go to System Preferences -> Sharing -> Computer Name.
The first option will be more immediate.