losing weight sucks

I'm back on the Hacker's Diet. I had been below 200 for a while in 2011 and 2012, and then work got stressful and etc. etc., and I got back up to 230ish at the start of this year. But since I lost my job I haven't been eating out for lunch 5 days a week. I'm also feeling so much better about life in general, so that makes it easier to try the diet.

It's working, I'm down to 220 or so. It does hurt though :-)

classic argument

"You're deluded!"
"No, you're diluted!"

Making Legacy sometimes feels like an exercise in hubris. I've had to carefully spin a cocoon of past success, monetary savings, prototypes, and supportive friends and family, in order to be able to give the caterpillar time to reconfigure its tissues into an indie game. I worry that at any time prosaic reality might pierce the protective silk and gobble up the little guy. Just give it time, I keep whispering to myself. Time, and tons of hard work. But I was going to do that anyway.

Reading Ready Player One, reading about the Oculus Rift.. makes me so hungry. I feel very luck to be where I am right now.

tmi time

So I have varicose veins. I thought it was just a cosmetic thing, generally, but it turns out they can lead to nasty side effects like the skin on your foot and ankle breaking down, becoming horribly itchy, and eventually venous ulcers that can spray blood unexpectedly. Yeah I have all that.

I went in today for an outpatient procedure to seal off the incompetent* vein. We had to abort it 2 hours in, before we even got to the part with lasers**, because it turns out my veins are so.. tortuous? twisted? they literally look like a pigs tail?*** So I had a wire in my leg for an hour for nothing..

But it's ok. Rescheduled the procedure at the medical center, with general anaesthesia, and they seem pretty confident they can get the job done at that time. So it's fine. God I hate being special when it comes to medical matters.

* a medical term!
** bummer, right?
*** this is what they told me.

overheard in the shower

"Software Engineering is the study of predictably* achieving acceptable** results with mediocre programmers***."

>> "Nate, no-one cares about your programming snark." <<

>> "...But I have footnotes!" <<

Jared made me read Ready Player One. It was a great read, I really enjoyed it, maybe because I got almost half of the references. It think it's really aimed at people just a bit older than me. Classic Gen Xers. Are we still using that term? Anyway: fast paced, teen-oriented plot, compelling setting, a great gimmick, modern sensibilities, and tons and tons of GenX pop culture references. Good times.

I still have that problem where I can't sleep when I'm reading a book if I want to find out what happens. So I finished it 4:30AM... This is why I don't read anymore.

* predictably: for given classes of problems, standard approaches are developed and encouraged. Knowledge of these patterns means that you can almost always find a way to do what you need to do.

** "Including, but by no means limited to, radical redefinitions of the word 'acceptable'." Ha. But honestly this is fairly important. Much of the history of software engineering and high level languages is the history of making acceptable performance trade offs in the name of readability and maintainability. And then arguing about what is "acceptable."

***The thing is, we are all mediocre programmers, in one way or another.

i can draw too u guys

Sometimes I need to make programmer art for things like UI or whatever. I refuse to pay money to adobe for this purpose, so I'm stuck with what's free.

I really... don't like Gimp. I respect it. I respect its principles and I'm glad it's there. In fact I used to crop the screenshots for this very post. But it's just not very good or easy to use. So every now and then I step off the road and start wading through the marsh, looking for something better.

Paint.NET is a total failure for me. On top of wigging out on my graphics card or something, and having a web site covered with skeezy fake download button ads, it just doesn't draw very well.

I actually am most comfortable in Flash, see: my previous career, even though, I'm told ;-) that Flash sucks for actually drawing stuff. But I've never used Illustrator so I don't know what I'm missing. I used to use Paint Shop Pro, a million (20?) years ago. I like pixels just fine, but modern photo editors just never really clicked for me.

I'm trying out Inkscape now and actually liking it pretty well. It's free and open source, and unlike Gimp it seems to care about how people use it.

It's not perfect, the defaults are a little weird, and the gradient editor tool is.. strange.. but so far I've been able to basically do what I want to do with it, which is astonishingly rare for a free paint program. Actually, astonishing rare for *software*, I'd say. I really appreciate the polystar tool options: 

It lets you deform the hell out of the path in several ways that, honestly, they didn't have to support. But they did and it warms my heart.

And then you can mess with it further by grabbing that handle and...
Then there's this thing:
with which you may choose to:
 I dig it. It suits my purposes.

we eat like kings

This is something I believe in general. Living in the US, with a low amount of effort you can eat food made with ingredients from around the world. Spices, meats, fruits, grains, cheeses, wines, breads, noodles, you name it. Actual kings never had that kind of choice. Or, by the time they could have, they had mostly all abdicated.

*bragging alert*

And more specifically, Annie and I eat like kings. :-) We find that with a moderate amount of effort (still way less than most people used to spend preparing and processing their food), we can make ourselves quite happy. Over the last couple months we've been aiming to do it all on a $1k/month food allowance, and so far we seem to be coming in under budget. It makes for a fun mini-game at the supermarket, but to be honest it's not that big a dent in our habits. If anything it's made us more adventurous; we're more likely to bake bread and roast chickens, and generally work more from scratch and less from pre-prepared food.

I've been feeling much better lately, compared to when I had a job. I still work all the time, but now when I'm thinking something over I walk around in the backyard. Now when I take a break I play with Benjamin or take him on a walk to give Annie time to work. It's funny that it feels like a little glimmer of how we'd like retirement to be: still engaged with our passions, but with time to cook food and hang out with friends and family built into the days.

I feel very, very lucky to have this opportunity, and I am working hard to make the most of it.

i'm an old man

When I was your age, computers had 2 colors: green and black! One day my dad brought home a fancy new computer that had 16 colors, and we thought were living in the future.

What the hell is this crap?
*These are the available OpenGL color formats. What's a snorm?


Nick and I will be working together on Legacy. Legacy has been a side project for a while, something we worked on at home for fun. Annie's done a lot of art for it, Doug has written a lot of lore for it, Isaac and Katie even helped a bit! I've been steadily chipping away at it for a long time.

We're going to be rewriting the code from the ground up in Java. Then, we're going to make it fun. I'm excited.

why so serious

I think one of the reasons I drifted away from Riot over the last couple years is my aversion to seriousness. This personality trait comes up again and again in my internal account of my life, and I'm sometimes conflicted about it. It certainly gives me something to prove.

One of the things I'm most relieved about is that I can leave Riot's inevitable transition to seriousness* behind me. I don't think it's because I can't compete technically, on the merits. I think it's much more that I find it tiresome to worry about every little thing. My style is much more "deal with it when it's a problem" than "figure it out upfront."

In my long term dream, the castle, I live the life of a gentleman-artist. I dabble in whatever interests me. I continue to work hard and learn. But the things I want to build are zeppelins, submarines, secret passages, towers on islands in lakes, underwater fortresses, aquaponics, tropical greenhouses in the snow..

It's difficult to tie that kind of whimsical vision to a big company. I often experience seriousness as a one way street. It's easy to get more serious, hard to get less serious. It takes real discipline, optimism, and trust in order to maintain a fun, creative working culture where mistakes are celebrated. I think it's extremely difficult to have that environment at a big company, for reasons of human psychology**.

If I'm willing to accept that I have the mentality of an artist but the skills of an engineer, then it seems that software engineering at a big company isn't really for me. Developing little games is the closest thing I've found to being paid to do what I want. Making my own game seems like an inevitable path.

*I don't think it will stop being fun to work at Riot, more that it's gotten so difficult to push stuff live. When I arrived, associate engineers could push code live without any real process at all. I'm more comfortable in that kind of environment, even though it may not be appropriate for a product the size of LoL.


so long,


I'm no longer at Riot. It was a good place to work and I really enjoyed many things about it, but ultimately my career is going in a different direction, and I'll have to figure that out.

I don't yet know what I'll be doing with my time, but Annie has her job and we have enough funds for the moment. Which means that all sorts of exciting possibilities are spread before us.

I'm really looking forward to figuring out what's next. Also if anyone want to talk about anything, hit me up. Real estate, stock, babies, restaurants, games, tech, cheese, whatever.

* "so long, suckers!" is a traditional farewell among my people. It carries no ill-will.

dance of four elements

Yesterday I heard from my friend Luigi that he had joined a startup, http://www.terrajoulecorp.com/ this place (the website is down for me as of this writing but I expect it may be up again soon?) It's a really cool concept, which is to use a steam engine in combination with a solar hot water heater to solve a nagging problem in renewable energy - storage, consistency, and variable output.

The idea is that you can essentially store the solar energy captured by the concentrator as a (very) pressurized tank of (very) hot water. Then as needed, you bleed off some water into a lower pressure environment, which causes it to flash boil into steam. That steam drives an old-school piston steam engine, which generates electricity. The company is targeting community and industrial scale power generation with this, as essentially a replacement for auxiliary diesel generators, in places where those are regularly used.

The thing I love about this system is that it could have been built 100 years ago. It doesn't require any fancy chemistry or software. Well, maybe it does as delivered today, but the concept certainly seems like it would have been buildable 100 years ago, and would have generated a stable supply electricity from the sun.

My immediate scheme is to figure out how to scale it down far enough to work for the castle.

The other idea that this kicked off starts here:
So, the fire and water fountain is cool, but why does it need an external power source? That's lame. Why not combine it with something like this: google: candle turbine ?

Then you'd have three elements, fire, air, and water, you might as well work in the fourth. The idea that came to me was a stone water wheel that's driven by the candle turbine. So the candle drives the turbine, the turbine rotates the stone, which picks up water, maybe even just on its surface, as it rotates. I think it would be super cute.

Also would make an excellent puzzle door if scaled up, so that the stone wheel had a hole in it at some point, so you light the torches, wait for it to rotate... I guess you don't really need the water in that application but so what.


Always follow your passion. It will never lead you wrong.

mipmap my cubetexture and my nonsquare one too kthx

I'm using AGAL to learn about GPUs. It's pretty fun, but every new thing I try is several hours of, "oh, nothing is rendering. hm.."

It was not obvious to me (or documented) that Cube Textures in AGAL need to be uploaded with all mipmap levels.

It was also not obvious to me (or documented) that if you want any mipmapping, you need to upload all mipmap levels.

It was also not obvious to me (or documented) that if you have a non-sqaure texture, you still need to mipmap all the way down to 1x1.

Where should I go to learn stuff like this? Are there better places to start? Otherwise I will slowly de-noobify myself. But gosh golly this seems like basic stuff that should be in the API documentation.

The other side of it is, the tools for debugging stage3D are really pretty bad. So when something is not showing up, I can't debug into the shader or ask the gpu what it thinks, very easily. (maybe I should make some tools here.?) Instead I'm left to cobble together my own checklists like:

  • check your math
  • short circuit to a known working texture/shader
  • think harder
  • add shader instructions back in to see if one of them mysteriously breaks something
  • google related keywords
  • try to think of a way to check intermediate/simpler results
  • check your math
I don't mean to complain too much. I am having a good time. Half the time when nothing shows up it's because my math is wrong, and it's hard to get too upset* about that. But, if this is what it's like to be a graphics programmer, then, graphics programmers need some serious tool loving.

*But I'll try. Friggin mathematicians and their badly named variables. Effing half the variable names used in math are NON PRINTABLE CHARACTERS on a standard keyboard. why don't you call it Math.ratioOfCircumferenceToDiameter or something sensible like that. GAAH.


he felt a great restlessness inside of him

that compelled him to seek

and when he was still it would stir

like a stomach ache

friggin linear algebra

I graduated from a prestigious university with an engineering degree. I work at one of the most exciting game companies in the world. But every time I try to do linear algebra, I become convinced that I'm just not smart enough.

screw you linear algebra. I don't need you. I have trigonometry and calculus, I can do just fine!

probably I need a better teacher.

Benjamin Wright Austin

hospital photos

I can feel my brain reconfiguring itself into daddy brain. Pretty crazy.

routine, practice, and software engineering

Routine is healthy. Animals and children need it. It's good for adults too. It can be taken too far but by and large, a routine can be a good thing.

Practice is laudable. It makes you better at your craft. It's just what you do when you want to be good at something.

Software, oh software.  Programming a computer is great because you write a thing once, and then THE COMPUTER DOES IT FOR YOU. You're done. You can check out. And the story of being a software engineer is the story of understanding problems, solving them in code once, and then letting the computer solve them from that point forward. If you never revisit your code, it might be because you did it right.

There's a disconnect here. As a programmer I'm attracted to the idea that I can solve a new problem every day, and accrue a mountain of functionality on which to perch, a labyrinth of routines and subroutines from which I need never venture. But if I ever succeeded, my very success would drive me mad from boredom. As a human animal I need the routine of solving problems. I need the practice to hone my skill. But my very success sabotages my own mental health. At large scale, it is a delicious psychological vignette.


I like my martinis like I like my humor, like I like my application code:



but not too dry.

I read the gang of four design patterns book a while ago and I've been thinking about it a bit. Aside from the patterns, which are whatever, the actual premise of the book is really interesting, which is that these patterns come up again and again and again in software development.

That's difficult to reconcile with the DRY principle, or at least it admits defeat. It says, you will write this many times, so at least write it the same way each time, ok?

This is a little bit what I was trying to get at in the previous post; code reuse is a ruse. It almost never happens in the real world, at least not the way we want it to. As a programmer, I am chasing this fantasy that I will write a thing once, and then it will be Written, and I may Reuse it for the rest of my life.

But the fact is, code is actually easier to write than it is to read. So, six months from now when I've forgotten al the details of what I just wrote, I will happier to write it again than to try to understand what I wrote previously. Sad but true.

Taking that conclusion and applying it back to the DRY principle is interesting. It suggests limits on how seriously we should take the principle. I am actually a huge believer in DRY as a heuristic for class and module design. At a code level it makes a ton of sense. But over time, and over large teams, it breaks down. It may be worth repeating yourself, in order to avoid the hassle of creating a dependency. It may be worth repeating yourself, in order to create a new local version of the same knowledge. As broken as that sounds.

The result of making this compromise consciously is something in between code and data. "Script" is the closest word for it. I've been thinking a lot about the continuum of art-design-code-system-hardware, and it's interesting to me how different people gravitate to different points on the scale.

The people who live over on the right have a bad attitude, in my opinion, towards anyone to the left of them. I get to say that because I could be one of them, if I wanted to. So I tell myself.