Monday, September 2, 2013

Xbox 360: 120mm fan mod for quietness

I wanted to watch a movie yesterday, but my Xbox's fans are too loud. So I decided to do something about it!


Batch photo resize preserving modify date

On Mac OS with ImageMagick installed (see also this older post):

mkdir resized
cp 2013-09-02*.jpg resized
mogrify -resize 3056x3056 resized/*.jpg
find resized -name "*.jpg" | sed "s/resized\///" | xargs -I {} touch -r "{}" "resized/{}"
mv resized/*.jpg .
rmdir resized

The crazy find/sed/xargs thing does the following:
  1. find : Find all the jpg files in the "resized" folder and return their relative path.
  2. sed : Find and replace all instances of "resized/" with an empty string. sed returns the full string with replacements, not just the match.
  3. xargs touch : Change each of the files in the "resized" folder to have the same modify date

Monday, July 22, 2013

Git rebase

After seing git rebase show up on StackOverflow a few times and purposely ignoring it (due to the overhead required to learn a new git command), I finally broke down and learned what it does.

And it turns out it's not that bad! The git book has a good page introducing it with nice pictures:

http://git-scm.com/book/en/Git-Branching-Rebasing

and I'll describe how I applied it to my particular situation.

Scenario

I have been pulling from a repository at origin/develop, but also making local changes and committing them to my local repository. Now I want to push some (but not all) of the changes to origin/develop.

Procedure

First, I wanted to see how my local repository (currently on branch develop) differed from origin/develop:

git diff --name-status origin/develop..develop

Now if I wanted to make all of those changes, I can just do git push origin, and it would be done. Instead I want to make a subset of those changes, but I can't just arbitrarily pick changes because maybe some of them depend on previous commits.

That's how rebase helps: it lets us re-order the commits. It puts all of the remote changes first (this makes pushing trivial), and then it applies our local changes in whatever order we tell it to. So we do:

git rebase -i origin/develop

and this opens up a text editor with all the local changes that have happened since we first diverged from origin/develop. We can rearrange the commits, collapse multiple commits into one using squash, and do all sorts of other things that are covered in this tutorial. In my case, I simply moved the changes I wanted pushed to the top of the list.

Once we save and close this file, git-rebase will try to apply each of those changes, in sequence, using origin/develop as a starting point. This may not proceed entirely smoothly, especially if you have re-ordered some commits.

Once this is finished, I go find the hash of the last commit I want pushed and push all the commits up to that one:

git push origin 1fc6c95:develop

And that's that!

Sunday, April 28, 2013

Fish tube, again



We re-installed the fish tube, and it seems to be much more popular this time around! Everybody's had a turn at it: the rasboras, panda cory, Amano shrimp, and even our nerite snail! The snail must have climbed up on a plant or something, because the tube doesn't touch the walls of the tank.

There is regularly at least one rasbora in the tube. It's usually a different rasbora each day, which is a relief.

Pita bread

Had leftover chicken from Zankou, but no pita to go with it, so I decided to make some!

I followed this recipe, paraphrased here:
  • 227 g (~1.5 C) flour
  • 65% water
  • 6% olive/canola oil
  • 1.5% dry yeast
  • 2.7% salt
Percentages are by mass, relative to flour. Special thanks to my roommate, who bought a 2 kg digital scale and a thermocouple reader for his coffee-making.

Let rise for 5 hr at 22°C. This produces a lot more gas than my usual bread recipe at the same temperature, probably due to the increased amount of yeast. Punch down, let rise for another half hour or so.

Preheat oven, with baking stone, to 475°F.

Divide dough into 6 balls. Flatten into discs and then roll out with a rolling pin.

Sprinkle some water on top, and let sit for 10 min or so. Ensure bottom is well-floured, and slide onto baking stone. Bake for 3 min.

Magically, it ballons up and then you get a pita! I still don't understand how this happened.

And it came out pretty good! A bit salty, but that wasn't so noticeable after filling it with chicken and garlic sauce and hummus. Need to be careful not to get it too thin during the rolling and handling process.