Starting to mock Shock in Python

I’ve been working off-and-on with Shock, my “programming language IDE/shell” in Rust, but I feel too slow when working in Rust. The productivity and working pace is just very slow. But when I work in Python, I feel a lot more productive. For example, I was able to pick this back up and submit changes …

Ranking Important Source Files in Godot Engine (3.0.2-stable)

Godot Engine (godotengine/godot on GitHub) is an open-source, primarily C++-based game engine. It supports both 2D and 3D. As a C++ programmer, I decided to generate a dependency graph of the #include “…” and try to determine the most important files in the graph. By doing so, I hope to uncover what files are important …

Is It Just Me, Or Is Academic Research Fragmented?

I’ve been trying to read papers for awhile in a few places in computer science, and I’ve come to the conclusion that trying to understand the “big picture” in research is sort of a mess. I don’t have any evidence, but it’s just a feeling. In my network science class, I came across a piece …

Things They Won’t Teach You In School

Disclaimer: at least at my school. And in years of lurking the Internet. #1 – Libraries (and making them too) Most people will NOT teach you libraries. Anything from Qt in C++ to Django in Python is going to be less likely than assignments to roll your own. Of course, some fields, like graphics and …

Doing Scheme – The Big Lie

This semester, I started and led a team of 10+ people to complete a basic Scheme interpreter with C++ — it’s up on GitHub as Shaka Scheme, and is still missing macros. It’s also pretty raw, so brace yourself. People say Lisp is so easy to implement. “So easy.” Sure, the idea that “it’s easy” is not …

Q: Why is Racket’s parsing system so complicated (Scheme)?

A: Circa 2016, Racket’s internal syntax representation system had to be revised because of macros, or “code rewriting” or “code-to-code procedures.” Matthew Flatt can explain in his paper, “Binding as Sets of Scopes” in POPL 2016, and also on his online notes on the new macro expander system for Racket (also formerly PLT Scheme). Q: …

In Scheme, even your keywords could be redefined.

Over the past few months, I’ve started the¬†shaka-scheme¬†project for my senior project at the University of Hawaii at Manoa, and I wanted to highlight two pieces of code that recently changed our entire course of development: (define proc1 (lambda () (define define 1) (display “define is actually “) ; This doesn’t display a procedure literal… …

C++: Template duck-typing in 30 lines

#include struct Duck { void quack(std::ostream& out) { out << “Quack!” << std::endl; } }; struct Platypus { void quack(std::ostream& out) { int* i = NULL; out << *i << std::endl; } }; template void do_quack(std::ostream& out, MaybeDuck duck) { duck.quack(out); } int main() { Duck duck; Platypus platypus; do_quack(std::cout, duck); do_quack(std::cout, platypus); } C++ …

Is intuition in programming important to you?

Note: Read only the bold statements if you want to skim this quickly. Do you remember the first time you saw classes? Objects? The word “string?” What about binary trees, regular languages, compilation of languages, and recursion? I don’t realize it myself a lot of times, but I’ve come a long way in changing my …