Thoughts on Static Typing and Smalltalk

I'm a huge fan of static typing - I have fond memories of playing with ML and Haskell in college, struck by the shear elegance of the programs I read, and how when I wrote programs, they seemed to “just work”. Even though most of my professional life has been spent writing code in dynamically-typed languages, playing with Elm over the last year or so has rekindled my love for static types.

Read More…
Posted on 2016-07-12

Implementing Minesweeper in Pharo

My first “real” computer ran Windows 95, and like many developers, my interests in programming were rooted in gaming. Along with Hover and Mindmaze, one of the games I loved to play growing up - a game I still love to play - was Minesweeper. I've never implemented Minesweeper, but it's a pretty simple game, and since Pharo comes with an easy-to-use UI library called Morphic, it seemed like a perfect fit for my Smalltalk project!

Read More…
Posted on 2016-06-26

Talking Small

For the May language of the month, I got to play with a language that I've been looking forward to sinking my teeth into for a long time: Smalltalk. I've had a fascination with Smalltalk since I learned of it in college, but I didn't “get” it at the time due to lack of learning materials.

Read More…
Posted on 2016-06-18

Winning at Salt Cartography Using Algorithms and Statistics

I spend way too much of my free time playing Salt - a game where you sail around a procedurally generated ocean, fending off pirates and hunting for treasure. A fairly recent addition to the game was cartography; you can add islands and features upon them to a map to stay oriented in the world. In the world, there exists a cartographer named Hachure, who will evaluate what you've mapped so far and reward you depending on how many islands you've mapped and how accurate your mappings are. So imagine my dismay when I had him evaluate my map for the first time and saw this:

Read More…
Posted on 2016-06-16

Porting a Module to Elm 0.17

Elm 0.17 has been out for a little while now; it has a slightly different way of doing things compared to 0.16 and before. Like many others, I started porting my existing applications to 0.17 - first I started with my only “production” application, elm typing tutor, which was pretty trivial to update. After that, I moved onto the sample code I wrote for a talk I gave here in Chicago about Elm, which was also pretty simple. Last weekend, I took it upon myself to update my last remaining body of 0.16 code - the first application I wrote in Elm, one I've been keeping up-to-date since 0.14. I haven't released this code publicly yet; but suffice to say it's an application with a coordinate grid that you can click and drag to scroll around. The drag event functionality is encapsulated in its own module, and porting it to 0.17 was a little more challenging than before, so I thought I'd talk about how that went!

Read More…
Posted on 2016-06-14