The path to publication is rarely as linear as the publication record would appear to indicate. For the last 12 years, I have been an active contributor to Legion, a research project originally out of Stanford which aimed to create a programming system for supercomputers that fundamentally and dramatically simplifies the way we program these machines, while providing best-in-class performance and scalability. Through many years of hard work, I believe we have succeeded in this goal. But even so, these years have been anything but straightforward.
This document is a personal history of Legion: the story of the project, told through the lens of the papers we wrote about it, and the journey that brought us to each one.
Historically, Lisp was a behemoth in the world of language design innovation. The list of Lisp’s innovations is so long that I’d have to list most of the features associated with modern languages. (Do you like
if statements? You can thank Lisp!)
But the language landscape has changed a lot since then, and realistically no programmer today cares about what made a language stand out 50 years ago. Clearly, the good ideas have been copied into other languages. Paul Graham even suggests this convergence towards Lisp is inevitable. I wouldn’t go so far. But this begs the question: Is there anything left? Are there any features that couldn’t be copied so easily into the various descendants of Algol?
I am extremely pleased to announce the release of Terra version 1.0.0. Terra is a programming language that integrates tightly with Lua and provides support for high-performance, low-level code and first-class metaprogramming. Terra runs on Linux, FreeBSD, macOS and Windows, is able to generate code for most CPUs, NVIDIA and AMD GPUs, and has been used on FPGAs. Applications and languages written in Terra have run on many of the world’s largest supercomputers.
Terra is a programming language that combines the power of a high-level scripting language with the ability to metaprogram low-level, high-performance code. Terra has been used on laptops, desktops, and many of the world’s fastest supercomputers. If you haven’t seen it before, it’s pretty awesome. You should go check it out.
My first exposure to ebooks was through the Kindle platform. I had money saved from a summer internship, and (among other things) used it to purchase a then-new third-generation Kindle. While I have continued to enjoy some aspects of paper, my Kindle had distinct advantages—most notably that it was actually lighter than many of the books I was reading. With it, I was able to maintain longer reading sessions without having to deal with my arms getting sore.
Sentimentality in fiction is generally considered something to be avoided. I’m thinking, for example, of the advice Laurie Alberts gives in her book Showing and Telling, though I’m sure similar advice would be given by any writing instructor. Sentimentality is cheap, and particularly if used at the end of a book, gives it an overall saccharine feel that detracts from its impact.
As writers, we’ve all been told to “show, don’t tell.” This oft-repeated advice is useful, but can sometimes be counterproductive. There are times when you actually want to tell.
Laurie Alberts helps to reframe the problem in her book on writing craft, Showing and Telling. Alberts tells us that in fiction (and other narrative prose) there are two primary modes of writing: scene and summary. Ultimately, we need both of these techniques, and few (if any) successful books use exclusively one or the other.
This review contains NO SPOILERS except where specifically marked.
For me, NieR:Automata felt like it came completely out of left field, going from complete obscurity to a cult hit seemingly overnight. I put the game on my wishlist, promptly forgot about it, and then recently dug it back out. And I have to say, it’s a gem.
Dialogue tags (“he said”, “she said”) seem simple, but can be surprisingly subtle. There are also a lot of variations that aren’t covered in common guides. I’ve had trouble finding good information about dialogue tags online, so I decided to put together this guide, mostly for my own use. Hopefully it might be useful for others as well.
I’m happy to announce the initial release of a file-based integrity checker written in Rust that I’ve been developing in my free time. If anyone here has feedback on the tool, please let me know.
Regent is a research programming language which extracts implicit dataflow parallelism from code written in an imperative and (apparently) sequential semantics.
Over the last two winters I have had the privilege of being a teaching assistant for CS149: Parallel Programming at Stanford University with instructors Alex Aiken and Kunle Olukotun. When I started, I took up the job of overhauling the management of machines for the course. CS149 is unusual in that each assignment investigates a different programming model. As a result, every assignment runs on a different hardware and software stack.
This guide aims to demonstrate how easy it is to set up truly private email in ten steps.
This spring I was lucky enough to be able to spend time working on something I’ve wanted to do for a long time: a full-blown 3D game engine in Common Lisp. As a part of CSE 125 at UCSD (a senior design project course in video games), I worked a team with 4 other people to create a 3D multiplayer video game in 10 weeks. The result is Blackthorn 3D, and an accompanying demo game named LKCAS.
I am becoming increasingly convinced that the folk saying “I’ll believe it when I see it” is wrong, at least some of the time. Or at least, people have a remarkably predictable ability to ignore seemingly convincing evidence in certain situations, when that evidence appears to contradict closely held beliefs. I’ve started calling this the “I’ll see it when I believe it” phenomenon.
Escalator, aka Entity System for Common Lisp (ESCL), is an experimental, high performance object system designed for games. An early version of the source code is available for use. While the system still has many rough spots, preliminary benchmarks indicate that the system may be up to 50% faster than CLOS for certain operations (tested under SBCL on default optimization settings).
Thopter 0.4 has been released! Thopter is a 2D scrolling shooter game in the style of Raptor: Call of the Shadows, with support for LAN multiplayer co-op mode. Version 0.4 includes a major graphics overhaul in addition to gameplay tweaks. Downloads for Windows and Mac OS X are available now, with Linux coming soon!
Thopter 0.3 has been released! Thopter is a 2D scrolling shooter game in the style of Raptor: Call of the Shadows, with support for LAN multiplayer co-op mode. Version 0.3 includes new support for arbitrary numbers of player in multiplayer, and the first ever build that does not crash on Windows :-) Downloads for Windows and Mac OS X are available now, with Linux coming soon!
Thopter 0.2 has been released! Thopter is a 2D scrolling shooter game in the style of Raptor: Call of the Shadows, with support for LAN multiplayer co-op mode. Version 0.2 includes bosses, an autofire button, and improved LAN support. Downloads for Windows and Mac OS X are available now, with Linux coming soon!