Carter Sande

carter.sande@duodecima.technology @__cartr__ | gitlab.com/cartr

Co-author of Hello World! 2nd Edition

Things I've made


Let's Explore Geography! Canadian Commodities Trader Simulation Exercise

Let’s Explore Geography is a text-adventure game where you drive around Canada trading commodities. It has over 50 cities to explore and 40 tradable commodities.

I created the game using Desmos Computation Layer, a simple, restrictive programming language intended for adding small interactive features to online math lessons. DCL is a pure-functional language without loops or user-defined functions; a typical DCL program is a one-liner along the lines of “the text box says ‘Correct!’ if the user entered 7 and ‘Try again!’ otherwise.”

On the other hand, Let’s Explore Geography is a complex interactive game whose DCL source code is over 200 kilobytes in size. It abuses the “action button” feature (a button that, when pressed, adds a number to a list) to create a complex state machine. To make it easier to write, I created a programming language called MacroDCL and wrote a compiler to convert it to DCL code.

The game also includes a printable map, which I made using QGIS, and descriptions of tourist attractions at each of the cities, most of which were researched and written by my little sister Kyra.

You can try the game out on the IFComp 2018 website.

Originally posted on gitlab.com

RECC

RECC is a command-line utility written in C++ that allows you to use Bazel’s Remote Execution protocol to run individual compiler commands on remote servers.

$ gcc -c hello.c -o hello.o       # Local compile
$ recc gcc -c hello.c -o hello.o  # Remote compile

The tool can automatically find header dependencies for GCC, IBM XL C, and the Oracle Developer Studio C compiler. It also includes a basic implementation of the Remote Workers protocol which you can run on “build worker” machines.

I wrote the initial version of RECC as part of a summer internship at Bloomberg LP. Since then, Bloomberg has continued to develop and improve it.

Originally posted on gitlab.com

HexaGBA

Screenshot

HexaGBA is a game similar to Super Hexagon, written to run on the Game Boy Advance. While modern computers and cell phones have special polygon-drawing hardware, the GBA does not, so I needed to do a lot of tricks to get it to look good and run at 60 FPS.

You can download the game here. See the README file for information on how to run it. You can also check out the prod on pouet.net.


LiveH2H-to-Slack Bridge

My team’s project for the LiveH2H Collaboration Hackathon was a LiveH2H-to-Slack bridge. It allows users to participate in LiveH2H video calls using a text-only interface by writing a live transcript of the call into the Slack channel and speaking chat messages with text-to-speech.

My main contribution to the project was grabbing the transcript by starting a headless Chrome instance, using the LiveH2H API to get a link to the call, and using the Chrome Remote Debugging API to connect to the call and intercept LiveH2H’s Web Socket messages. I worked with Sang Han, who handled the text-to-speech feature and helped with the Slack integration.

The project ended up winning the first prize. You can see a video of our pitch in 360 degrees on YouTube, but the first part of it is unfortunately cut off.

Originally posted on github.com

A scholarship I'm applying to wants me to write about the way I see the world. I don't blame them -- optics is really interesting!

Originally posted on twitter.com

cartr/qt4/qt

This Homebrew tap allows you to install Qt4 (and various packages that depend on it) on macOS Sierra. You can install it like this:

brew tap cartr/qt4
brew tap-pin cartr/qt4
brew install qt

Feel free to submit an issue or pull request if you run into any problems or have any suggestions for improvements to the packages.

Please note: Qt4 is unsupported by its creators, so there are likely security/usability problems with it that will never be resolved. If you can, please consider migrating your projects to Qt5.

Originally posted on github.com

Star Trek GO

Screenshot

This iOS game was created for my little sister’s birthday party. In it, you walk around a real-world location using your phone to look for items. (It’s not officially licensed or endorsed by the real Star Trek or anything.)

Since Location Services isn’t always accurate enough to do small-scale location, we fake it by using the device’s accelerometer to detect when the user is walking/running. Combined with a hard-coded timer, this ensures everyone takes roughly the same amount of time to collect each item and finish the game.

Originally posted on gitlab.com

Why did iOS 9 remove the ability to change checkmark colors with CSS?

In iOS 9, U+2714 HEAVY CHECK MARK is included in Apple’s set of emoji characters. Just like the other emojis, it’s drawn as a full-color bitmap instead of a single-color vector glyph, so you can’t change its color with CSS. (In fact, there’s no guarantee that the check mark will even be black. Other platforms draw it in a variety of different colors!)

To get iOS to draw the check mark as regular text that you can recolor, you need to use a U+FE0E VARIATION SELECTOR-15 character. If you put that variation selector character right after a ✔, iOS will use the regular text version (✔︎) instead of the emoji version (✔). OS X doesn’t have an emoji variant, so these look the same, but on iOS the variants look slightly different:

The regular text version and emoji version on iOS.

In HTML, you can add the character by putting a ︎ directly following your check marks.

Originally posted on stackoverflow.com

Fun fact: Canada has a national font! The Canadian government downloaded it for free off the Internet. thestar.com/news/insight/2… #CanadaDay

Originally posted on twitter.com

Got a third-row seat to the keynote at #WWDC2016!

Originally posted on twitter.com