Thursday, January 29
Tuesday, January 20
Agricola
Cait and I have recently been playing Agricola and been having a lot of fun. Though all the little cubes and discs give it non-trivial set up and take down efforts, that just means that we’ve been playing at least two games in a sitting to make it “worth it.”
Agricola has scratched a nice itch for me that was unsatisfied by some of our other two-player favorites, which include Battle Line (which is a must-try for anyone who likes Lost Cities but could use more depth) and light war games like Nexus Ops and Battle Cry. Building a little farm is a fun activity, and there’s a pleasant level of player interaction in the “only one person may perform each action” mechanic. The other player can upset your strategy (either purposefully or inadvertently) even though the overall tone of the game is positive.
I wonder how much of Agricola’s popularity and charm comes from its length. At the end of each game I wish I could go just another round or two, which makes me all the more eager to play another full game again.
Agricola has scratched a nice itch for me that was unsatisfied by some of our other two-player favorites, which include Battle Line (which is a must-try for anyone who likes Lost Cities but could use more depth) and light war games like Nexus Ops and Battle Cry. Building a little farm is a fun activity, and there’s a pleasant level of player interaction in the “only one person may perform each action” mechanic. The other player can upset your strategy (either purposefully or inadvertently) even though the overall tone of the game is positive.
I wonder how much of Agricola’s popularity and charm comes from its length. At the end of each game I wish I could go just another round or two, which makes me all the more eager to play another full game again.
Tuesday, December 30
Notes About Git + SVN + Google Code
I wanted to do some hacking over vacation, so I decided to pitch in and implement a feature request for Guice. Here are some of the things I learned about using Git with Google Code’s Subversion repositories:
Recommended Google Code Git Initialization
(run this in an empty directory that you would like to be a repository)
Note: This will pull the entire SVN repository back to its beginning. The
The
Additional Notes
Recommended Google Code Git Initialization
(run this in an empty directory that you would like to be a repository)
git svn clone -s --prefix=svn/ --rewrite-root=https://guice.googlecode.com/svn http://guice.googlecode.com/svn .Note: This will pull the entire SVN repository back to its beginning. The
-r argument can be used to limit the pull.The
--rewrite-root line is there so that you can remove it if you get membership status on the project and want to commit.Additional Notes
- “Develop with Git on a Google Code Project” is a pretty good intro article that covers the very basics of using Git and connecting with Google Code.
- “An introduction to git-svn for Subversion/SVK users and deserters” seems to be the most comprehensive description of setup and use cases of Git’s SVN support.
- “Git SVN Workflow” is also a nice and friendly read.
- Fink’s git-svn 1.6 package seems to be broken, at least for Mac OS X 10.5. It bus errors on launch. I found a fink-users thread that comments on this but provides no solution. I grabbed it from MacPorts instead, and that worked with no problem.
- Passing the
--prefix=svn/argument togit svn initmakes it easier to differentiate between server-side branches and local branches. - In theory, you cannot change the SVN repository URL later. In practice, it may be possible. This is particularly important for Google Code because if you check out the repository with HTTP, you cannot then commit because committing requires HTTPS for the authentication. Compounding this problem, you cannot (as far as I can tell) check out with HTTPS unless you are a member of the project. In this light, it may make sense to check out new projects using
--rewriteRoot(as mentioned on the GitSvnSwitch page) pointing at HTTPS. I ended up just re-creating a new repository and usinggit amto move a commit between repos, as described here. - Use the
--usernameargument togit svn fetchwhen checking out with HTTPS. You’ll be asked to type in a password (which is the random characters from your Google Code profile). Git will then save this information somewhere (I’m not sure where), so it means that you won’t have to memorize the Google Code password, or even re-specify the--usernameif your Gmail username differs from your username on your computer. - Remember that
git svn dcommitwill commit to the repo once per Git commit. This will likely annoy other people on the project, so it’s best to either usegit rebase -iand squash everything, or do agit reset svn/trunkand then make a single commit of the index (don’t forget to re-add new files).
Sunday, December 21
Installing Graphziv on Mac OS X
I’m playing with Graphviz on the Mac. Unfortunately, the latest official download, 2.20.3, gives the following error message when run from the command line:
dyld: lazy symbol binding failed: Symbol not found: _pixman_image_create_bits Referenced from: /usr/local/lib/graphviz/libgvplugin_pango.5.dylib Expected in: flat namespace dyld: Symbol not found: _pixman_image_create_bits Referenced from: /usr/local/lib/graphviz/libgvplugin_pango.5.dylib Expected in: flat namespace Trace/BPT trapThe solution is to go to the downloads directory and download the next-most-recent release, 2.20.2.
Wednesday, December 17
Flaw: Constructor does Real Work
Flaw: Constructor does Real Work: "Fundamentally, “Work in the Constructor” amounts to doing anything that makes instantiating your object difficult or introducing test-double objects difficult."
Misko has a great article about making sure that your constructors permit your class to be reasonably testable. Read the whole thing, his detailed examples are very informative.
Subscribe to:
Posts (Atom)

