Front Page Archive

Cessen's Ramblings

2014 - 10 - 27

Zed: a Code Editor

(Update 2024-01-27: Zed is now defunct, unfortunately. And to make things even more confusing, a completely unrelated editor project has taken its name. That other editor has very little, if anything, in common with the Zed editor I talk about in this post.)

I like to write code. And like many such people, I am constantly in search of the perfect code editor. Of course, such a tool does not actually exist. But nevertheless, from time to time I like to try new editors that seem to present something new and interesting, to see if I can improve my code editing experience.

Most recently, over the last year or so, I've been playing with editors built on top of web technology. Specifically, I've been playing with Light Table, Brackets, Atom, and Zed.

I started off with Light Table—which is a really cool and innovative project, and I certainly recommend checking it out—but I pretty quickly migrated to Brackets (which is a bit more conventional) for most of my coding.

Brackets is a really cool editor, with an obvious focus on UX concerns. The editor itself looks beautiful, and I appreciated how it eschewed tabs in favor of a simple vertical list of open documents. Despite Brackets being targeted at web development, I primarily used it for C++ coding. And it worked wonderfully. The only real complaints I had about it at the time were that its scrolling and editing were a bit laggy, and it didn't support split views. (Incidentally, it now supports split view.)

2014 - 06 - 25

Psychopath Renderer Website

I've created a blog/website for my 3d renderer: http://psychopath.io

Woo hoo!

2014 - 02 - 14

Ray Reordering and Breadth-First Ray Tracing

As I mentioned in my post about random number generation, I've been working on an experimental 3d renderer named "Psychopath".

I haven't posted much about it, but I would like to change that. Psychopath is easily the largest one-man personal project I've ever undertaken, and it's something I regularly get excited and obsessed about, disappearing into my own little programming world, often not eating for extended periods because I don't want to stop working on it.

So I'm going to start by writing about a core aspect of Psychopath that makes it different from most renderers I've seen out there: ray reordering.

Psychopath is what is commonly referred to as a "path tracer", which means (in over-simplified terms) that it is based on tracing rays of light through the scene, bouncing all over the place.

The traditional way to do this kind of ray tracing is to trace one ray through the scene at a time. This has the advantage that you only have to store one ray at a time in memory, and also has the advantage of a large body of research to draw from for making it as fast as possible. It has the disadvantage, however, of accessing the scene in a very incoherent way.

There are a couple of alternative ways of doing ray tracing, both of which are based around the idea of handling many rays at once, and both of which have many variations (some of which blur the distinction between the two).

2012 - 06 - 26

Pseudo-Random Number Generators

Holy crap it's been a long time since I've blogged here. And you know what? I'm fine with that. I'll blog when I actually have something I want to share. Like now, for example.

So, I've been pecking away at a 3d renderer that I've dubbed "Psychopath". I've put it up on GitHub: https://github.com/cessen/psychopath_cpp

Anyway, I'm discovering all sorts of nifty little things as I'm working on this, many of which are handy and general-purpose. The latest one is a simple pseudo-random number generator that is quite robust.

For most simulation applications (advanced 3d rendering can be considered such) the included random functions in e.g. most C or C++ standard libraries are insufficient. Moreover, it is important to be able to guarantee that the RNG you are using is consistent across platforms and satisfies specific properties of randomness. Therefore it is generally a good idea, in these applications, to include a custom RNG implementation and use that.

The go-to RNG for such purposes these days is the Mersenne Twister, and as such that is the RNG I've been using in Psychopath up to this point. But the code for it is quite complex. And as it turns out, there are other RNG's out there that are pretty much just as good, but have far simpler code.

2011 - 10 - 09

Middle Schools In Seattle

I have been helping one of Tiffany’s daughters with her math homework recently. She’s currently learning about ratios. It is no wonder to me that she needs help. Not because she isn’t bright. In fact, she is very bright and has a natural knack for math, I would say. Rather, the text book is horrendous.

I am pretty decent at math, and I deal with ratios all the time in computer graphics and animation. But this text book confuses me. And I already know the topics it is covering. How on earth is someone new to the material supposed to find it helpful? And from what I hear, the teachers are extremely hit-or-miss.

Good god. This makes me really angry. The only kids that are going to learn this math are the kids that go off and learn it from completely separate sources. And at that point, what is the point of the school system? It seems like all it’s doing then is taking up valuable time that the kids could otherwise spend actually learning things. And how are kids supposed to develop a love of learning if this is their experience of it? It is sabotaging these kid’s lives.

Public schools need to be better than this. Why aren’t we funding them well, again? Why are we throwing them bone scraps? How do we stop this?