A friend and I have started a side blog to track our experiments in electronics.
It's over at The Arduino Collective.
A friend and I have started a side blog to track our experiments in electronics.
It's over at The Arduino Collective.
It can happen to the best of us.
Take this opportunity to make sure your site is properly backed up. And while you're at it, upgrade WordPress too.
For a while now, I've been backing up the few WordPress blogs that I run for various people with a very simple script that followed this algorithm:
At the time, I did this because it was the simplest thing that could possibly work. It didn't depend on any external facility other than mysqldump, tar, and scp.
Well, running that script on a nightly cron filled up my disk allocation on that remote server a couple times, so I got clever with the backup organization so I could quickly remove old backups while keeping sparser (monthly) backups for longer. This only helped a little, because I was still nervous about deleting backups because I didn't know what they contained.
I also have been using git more and more recently and I liked the idea of version control that can go in any direction. So, in the spare bits of time I've had in the past few weeks, I wrote git_backup.pl. It takes a git repository and does the following:
Now, when the backup is run, only the small changes are sent to the remote server and I can look at the differences by examining the git log.
There are options for dumping database tables, changing the commit message and the remote that gets the push. Running "git_backup.pl --man" will show all the options.
The source is (of course) in a git repo: http://git.endot.org/git_backup.git
The tree and history can be browsed at http://git.endot.org/.
Being the data and visualization nerd that I am, I've been delving into R on occasion. For this purpose, I am using R.app on my Mac. To start it up for a certain working directory (to keep different projects separate), I run "open -a R <working dir>". This worked great until I noticed that my history wasn't getting saved to the .Rhistory file in each directory. When I use the command line R executable it does, but not in the R.app GUI.
So, it took me a little while to figure out that it's a bug in the R.app code and you have to use a workaround. Open R.app's preferences and set the "R history file" key to something other than ".Rhistory":

Now, after a restart, the .nateRhistory file in the working directory is properly updated.
Observed many times and today is rampant proof:
The surest way to be interrupted at your desk is to put on some headphones and turn on a good album.
And there's an interesting corollary:
The surest way to NOT be interrupted at your desk is to put on some headphones and play NO MUSIC AT ALL.
In an attempt to pursue a hobby that does not involve a heap of monitor staring, I decided to get more serious about photography. I've always enjoyed taking pictures, but I wanted to get deeper into the process. So, I saved up some money and purchased a used Canon 30D from a friend back in March. In the months that followed, I noticed myself passing through several stages as I got used to photography as a hobby rather than just image capture. In retrospect, I thought they were rather funny. I'll share them over the next few blog posts.
Today was a great day. Today Sara and I celebrated my birthday. She planned the whole thing out, so all I had to do was go along for the ride.
After sleeping in till 10:30 (due to a late night up in Hollywood catching District 9 with some old friends), we ate a breakfast of waffles and bacon with pineapple and apple juice. We took our time and really enjoyed each other's company.
Then, after cleaning up and getting directions, we headed up to the Van Nuys Airport. Ever since I saw One Six Right, I wanted to go up to Van Nuys to see the airport firsthand and of course, to watch the airplanes. We first tried the little viewing area to the west of the airport. It's a good area to sit and watch the planes come in, but isn't the best for taking pictures or getting very close to the aircraft. So, thanks to a posting on airliners.net, we went to the other side of the airport to the intersection of Arminta and Hayvenhurst. The view wasn't any better over there, but just before the corner we spotted several old airplanes and decided to stop.
The planes all belonged to the Condor Squadron, and we were able to go through the fence and walk among the planes. They are all AT-6/SNJ trainers that were used in World War II. We met Chris and John, two members who own individual planes. They were cleaning up and refueling after doing a simulated dogfight over the Lane Victory earlier in the afternoon. It was great to talk with them and learn a bit about their planes. I took quite a few pictures, which I will try to post tomorrow.
After we left Van Nuys, we headed down to LAX and went to the Proud Bird for dinner. Since we were early (only 5pm), it wasn't crowded at all and we were able to get a table right on the window. The prime rib and mashed potatoes were great and we just finished up the day with chocolate cake and a movie.
All in all it was a great day. Thanks for making it special, babe.
I'm always looking for ways to improve myself as a programmer. It usually involves something fun, but after reading this post, I think my new area of improvement is to stop increasing my technical debt.
From a related post from Steve McConnell:
Other debt accumulates from taking hundreds or thousands of small shortcuts--generic variable names, sparse comments, creating one class in a case where you should create two, not following coding conventions, and so on. This kind of debt is like credit card debt.
I was doing a review of some relatively mature (3 years) code today with the rest of my team and I found more instances of this kind of technical debt than I would like to admit.
There are other kinds of technical debt, and it's easy to hate them and the reasons for incurring them, but this small stuff is totally under my control. And it has to stop.
Today was the last day of work for one of my co-workers. It's weird to call him that, he was a friend for a long time before he was a co-worker, but it's the co-working part of our relationship that's coming to an end.
We've worked together for more than three and a half years, and in that time, we were able to build some really cool stuff. We worked together so well that at one point, when we were the only two developers, we were routinely referred to as "Navid," a portmanteau of our first names.
I will miss him for many reasons, but one sticks out in my mind. It took me nearly all of the four weeks notice he gave us to finally realize that I'll miss him because of how much he challenged me. He was always learning. And, everything he learned about was relevant to our development in a significant way. He'd routinely start sentences like "So I read this book over the weekend on data warehousing..." or "Do you know what's so cool about python decorators?" When he did, I knew that for the next hour or two of my life, I would be treated to a session of mind expanding dialog. I know I am not the same person today that I would have been if it weren't for the last few years, working with him.
So, I'm going to miss him.
I am happy beyond words for the changes he and his family are able to undertake, but I'll miss him.
Thanks for the time, Dave. We'll work together again sometime.
A great quote from one of DHH's latest posts:
There's absolutely no pleasing everyone. You can't and shouldn't try to make everyone love you. The best you can do is make sure that they're hating you for the right reasons.
Being a people pleaser by nature, learning the above has been tough for me. Especially lately.