Jon Aquino's Mental Garden

Engineering beautiful software jon aquino labs | personal blog

Saturday, April 30, 2011

The Kinds of Board Games that I Like

My friend and I have spent several hundred dollars on different board games in the past. Then I burned out on board games and stopped playing for a few years. Now we're slowly getting back into it (playing a game every 3 weeks or so). Having wasted a lot of money on games that didn't work for us, I think I finally know what kind of games I find fun.

  • No longer than 60 minutes. For some reason, when we play, it's always twice as long as it says on the box. Twilight Struggle is the #1 game on boardgamegeek right now. And yes, we bought it. But it says it takes 3 hours on the box to play. That's too long for me, and the way we play, it takes way longer than that.
  • Interesting subject matter and game graphics. It doesn't matter if the game is brilliantly designed – if it doesn't look good or if we find the theme embarassing, it's not going to get played. Schotten Totten is supposed to be a very fun game. It is "full of surprising subtleties, deeply satisfying"[1]. But man – the graphics are of these cartoonish overweight Vikings. I think that's why my friend never asked to play it after a couple of times.
  • Rules that fit into one's head. If the rulebook is very long or complicated or has all sorts of exceptions that you need to remember (i.e., it's "fiddly"), the game is going to be painful for me. We bought Axis & Allies Europe 1940. The components look amazing. The map is beautiful. We never played it and are trying to sell it. Why? I couldn't fit the rules into my head. That doesn't mean we don't find meaty games fun. Consider Tigris and Euphrates. It's a meaty game, with deep strategies. But the rules are relatively few – they can fit into your head.
Today I went to the board game store and bought Ticket To Ride: Europe. So what if it's considered a "gateway game" for non-gamers, a "filler game", a "lightweight game"? I am not a true gamer and maybe not even a casual gamer. For me, it had the right length (60 minutes), beautiful board and pieces, and rules that easily fit into my head. We had a game in the afternoon and I'm still thinking about strategies to try for next time.

Wednesday, April 27, 2011

Web 2.0 Stylesheet

Want to make your boring Times New Roman internal-use web app more "Web 2.0"? Slap on the CSS from this Web 2.0 Stylesheet. Don't forget gradient.jpg.

It's a tongue-in-cheek site, but it's actually not a bad way to make an unstyled webpage look a bit better.

If you are too lazy to copy files around, just stick this line at the top of your HTML:
<link href="http://jonathanaquino.com/web2.0/web2.0.css" rel="stylesheet" type="text/css" />

Thursday, April 21, 2011

Wikipedia article on the history of Western civilization

Today's fascinating reading is the Wikipedia article on the history of Western civilization. In a few dozen pages, you are treated to a sweeping narrative of the 2500 years leading up to present-day Western culture - from Plato to the 2011 Libyan uprising.

Sunday, April 17, 2011

How To Tell A Story

It is good to know how to tell a story. Some Googling led me to the following interesting pages.

* YouTube - NPR's Scott Simon: How to Tell a Story
* Noise Between Stations » How To Tell A Story
* Seth's Blog: Ode: How to tell a great story
* A Quarter for a Tale: How To Tell A Story
* How to tell a story like Malcolm Gladwell

Thursday, April 14, 2011

Blink Hud: An Attention-Grabbing Growl Style

All the Growl styles I've seen are pretty subtle - they don't really grab your attention. Which is problematic if you want to be notified when your meetings are starting. I modified Rogie King's "Hud" Growl style by adding a blinking icon for notifications with Emergency priority - see the video clip below.



Modifying a Growl style is pretty easy. It's just a folder with an HTML file and a CSS file, basically.

Friday, April 08, 2011

Graphical diff tool for Git

I think I'm in love again. I had to resolve some hairy git conflicts, and the in-file conflict markers were not giving me insight into what was going on. It was basically showing me two big chunks of code that were pretty different.

I installed an open-source 3-way graphical diff tool called DiffMerge and configured git to use it, and it became obvious what to do (in this case, removing the green portion).

Check out the screenshot below, which shows ours on the left, the common ancestor in the middle, and theirs on the right. It's worth studying what the colors mean (in the DiffMerge preferences).

* AdminController.php.LOCAL.4607.php, AdminController.php.BASE.4607.php, AdminController.php.REMOTE.4607.php - SourceGear DiffMerge

Thursday, April 07, 2011

icalBuddy - command-line tool for querying iCal events and tasks

I think I'm in love. icalBuddy is a simple command-line tool for extracting events and tasks from your Mac. For example,

icalBuddy eventsToday+7

prints out the calendar events for the next week, including recurring events. I was googling around for applescripts to do this, and handling recurring events was going to be a major pain, so I'm glad I stumbled on this tool.

Similarly,

icalBuddy uncompletedTasks

will print out all uncompleted tasks.

This is great. I'm going to use it to export my calendar and tasks to my Windows Mobile PDA. Which means I get to continue holding off on buying an iPhone. Yay!

Wednesday, April 06, 2011

Alarms: Reminder program for Mac

I'm trying out this neat reminder program for Mac called "Alarms": http://gigaom.com/collaboration/alarms-intuitive-task-management-for-the-mac/ Its menubar icon flashes, it it makes a little pinging sound. It's also quite pretty. A bonus is that you can pull down on the menubar icon to start a countdown timer. I only wish it had recurring events.

Update: The developer points out that there is an app called Again that works with Alarms to do recurring tasks. It works well.

Sunday, April 03, 2011

Classes are Platonic, Interfaces are Aristotelian

I'm reading The Last Superstition and am trying to grasp the difference between Plato's and Aristotle's views of reality, and it struck me that they seem to be similar to some concepts in object-oriented programming.

  • Classes are Platonic. Plato believed that there is another dimension where universals (i.e., classes) live. In this dimension live the Tree class, the Chair class, the Dog class. In the regular world live instances of Tree, instances of Chair, and instances of Dog.
  • Interfaces are Aristotelian. Aristotle did not believe in another dimension containing universals. Rather, he believed that the universals somehow live in the objects, and that our intellects have the ability to look at objects and mentally extract the universals from them. In other words, objects have interfaces: tree objects implement the Tree interface, chair objects implement the Chair interface, dog objects implement the Dog interface.
  • Duck typing is Cartesian. Descartes subscribed to the Conceptualist view, in which universals (interfaces) don't have any kind of existence in the world – they are just in the mind.
  • No typing is Humean. This is the Nominalist view, in which there are no universals – in the world or in the mind.
Consequently, one must infer that Plato would have programmed in Smalltalk; Aristotle, in Java; Descartes, in Python; and Hume, in Basic.

The State of GTD on the Mac

It seems that there isn't a perfect setup for GTD on the Mac. Lots of people like the desktop application The Hit List, but it has no iPhone app. Things has an iPhone app, but it lacks some cool things that The Hit List has, like hierarchical tasks. OmniFocus is the most expensive application, and it has an iPhone app, but people say it has a steep learning curve and isn't fun. And to top it off, if I did get an iPhone or iPod Touch for GTD, it has security issues.

I'm going to continue using Entourage for email and calendar. For tasks, I'll switch from Entourage to The Hit List, because I do need a change. Instead of buying an iPod Touch, I'll continue syncing to my old Windows Mobile PDA.