My DConf livestream sneak preview

Posted 2020-10-19

I'm on the DConf Online 2020 schedule! Here, I'll give some behind-the-scenes preview on what I plan to talk about.

Core D Development Statistics

In the community

Community announcements

See more at the announce forum.

My DConf livestream

On the dconf website, you can see I'll be "livecoding a small, simple online multiplayer game" on Nov 21 (my birthday too, lol). But what does that mean?

I might change as time goes on - the plan is to do it live, after all - but right now I think I'm going to make a little asteroids / space war style game and compile it for Windows, Linux, and Webassembly. It will support a second player (possibly more) joining into the fray.

That is deliberately not too ambitious because I need to fit it all into a 90 min session, and want to leave space for off-topic rambling and audience interaction too. But it is enough that I'm sure it can fill all the time if needed.

My struggle right now is how much do I actually want to do live? If I wanted to do everything from scratch, not much will actually be finished in that time. I'll certainly be using my existing libraries to some extent, and may even write part of the game itself ahead of time, then just livecode some additional bits to it. Or I might write ahead of time, then delete it and rewrite it live, but now with the experience of what can go wrong to ensure I don't waste 30 of the 90 minutes looking up some quirk or chasing a random bug. That'd just be boring.

But it would also be boring for everything to go too smoothly, since that doesn't give much to talk about! I want to have a chance to talk about library porting and debugging.

I think I will go somewhere in the middle. For example, last weekend, I fixed the array append operator in my webassembly hacked druntime. Previously it would work... for certain data types. Now it works (hopefully!) the way it is supposed to in the general case.

On the one hand, this means the port won't be wasted chasing down memory corruption bugs. On the other hand though, I can't talk as much about it. Still, I'm gonna keep that code going into it since it took a pretty big chunk of time to get right (druntime's internals are... unique in this area). I'll surely talk about how it works, but you won't see me actually dive in and write it.

That said, I definitely do plan on *something* like that being a part. I want to talk about my library philosophy, where I just reach through the layers and write what needs to be written as it is needed. That includes druntime functions on webassembly, in contrast to doing a full port of it up front, then making my application. But it might just be a simpler function, or a quick review of existing code.

I also plan to write the html5 network communication component ahead of time, since there's not a lot of fun in watching me bounce around MDN. But... again, the way it actually works is kinda interesting.

I figure I'll probably write like half the game ahead of time, then plan out features in the second half that will need to cross the layers live. It is kinda sorta cheating... but it (hopefully!) will also hit that right balance to use the time effectively.

So, my plan is you'll see:

  • adding something to an incremental, minimal druntime
  • implementing a Phobos function with my javascript bridge
  • discussion on how the arsd lib evolves
  • the game code, showing some simpledisplay.d usage (and possibly joystick, audio, and more)
  • my webassembly compile harness and a quick explanation of how it works
  • a little web service for the game with a website and communication hub for the multiplayer aspect with cgi.d
  • my mad skillz as a starfighter pilot
  • hopefully my terminal emulator and such in action - my work environment is surely unlike anything you've seen before! (but I might also just stream from Windows. but you'd still see the terminal emulator at least.)

And as for the details, we shall see what comes up with the live audience!

A month away now....