1. 19

This is the weekly thread to discuss what you have done recently and are working on this week.

Please be descriptive and don’t hesitate to champion your accomplishments or ask for help, advice or other guidance.


  2. 17

    Book editing! Editing hundreds of pages of text, fixing references, fixing broken figures, massaging contributors' text so it fits into the main flow of the book coherently, etc. The last 5% of this takes forever.

    But at long last, the final, publication-ready proofs of our textbook Procedural Content Generation in Games are at the printer. Should be out on paper later this year from Springer. Looks like they’re going to price it at $50, which is a bit more than I’d personally like (~$30 or so would make it more attractive to hobbyist impulse purchases), but is at least cheaper than typical $100+ textbook pricing. Also, you can get PDFs of the chapters free from the above link.

    On that, we’re reasonably happy with the outcome of negotiating with Springer. They are kind of an old-school publisher that doesn’t really do open access, so the book isn’t officially open access in the sense that the publisher makes an open-access version available. But we wrote into the publishing contract that we as the authors can make an open-access version available ourselves. Various versions of the drafts have been available on our website for years (linked above), periodically updated, with the intent of doing a kind of editing in public of the drafts, getting feedback from colleagues and readers before publishing the final version (also I’ve heard some people already used chapters from the draft version as texts in courses). I just refreshed the online PDFs so they now match the final version that will be published on paper.

    Since it took a while to get the final version out (partly because all three of us changed jobs during the process), there have of course been more developments in PCG for games that could be added to the book, but we wanted to get this version published rather than endlessly iterating. I can think of at least two chapters I might add to a 2nd edition, though.

    1. 7

      After finishing ansible-role-acmetool (still a little rough but works fine on Ubuntu amd64/arm now) and throwing in ansible-role-murmur for fun, I will need to find an encrypted incremental backup system that works when the remote runs an ARM port of Ubuntu (fewer packages and I don’t intend to compile anything).

      To pass time (yay, unemployment) I’m rewriting my shoddy PHP file browser (woland) in Go to keep learning the language.
      Progress is slow but I expect a first working release in a week or two.
      According to my usual naming scheme, this one will be called Thanedd.

      I am also adjusting myself to using Android without gapps. The worst part for now is the broken GPS and that UnifiedNLP won’t work.

      1. 3

        I’d be interested to hear what you find for the backup system, the “best” thing I’ve found is Crashplan (although it requires java on the remote system). (I’d use tarsnap, but it doesn’t let me backup to a LAN server as far as I can see.)

      2. 7

        Context: pretty much all my coding projects time goes towards Arcan (clicky) and its subprojects. This week it’s directed towards three especially painful parts, all with a big ‘try, fail, throw away, try again, fail harder, switch part and try again later” sort of cycle until a working solution is found or I cry myself to sleep :)

        1. “the devil’s threesome” (multi-gpu support) - one AMD gpu, one Nvidia gpu, one Intel gpu, each connected to a monitor. A window with contents generated on one GPU should be able to be moved between the displays seamlessly with minimal copying / duplicated storage.

        2. “initial VR support” - time to start pushing for a serious VR desktop, first step — getting a shared-memory based interface going for mapping sensor-data to an avatar, need to account for all the funky input devices on the horizon for things like eye tracking. Then try and map this interface to the OpenHMD project (seems like the cleaner API to chose from).

        3. “protocol- bridge” - external tool that translates wayland (to start with) requests into something more manageable. First attempts at doing the translation inside the engine itself was scrapped due to the design of the libwaylandserver library, so second round will be a bridge process, with a distant third being a reimplementation of the wire protocol or just giving up.

        1. 4

          one AMD gpu, one Nvidia gpu, one Intel gpu, each connected to a monitor.

          Shine on you crazy diamond. o7

        2. 6

          Diving deeper into DSP. Having read much during my holiday I’m trying to get to the point where I can control a game using the microphone as the only interface. I’ve been quite successful thus far, getting up to speed with FFT, MFCC, DCT, over the break. I have a smooth control interface (thanks to the beauty of MFCC). Now I just need to cram it into box2d.js and get something out there. Oh, and not to mention I need to eventually HTTPS my site, as the getUserMedia API is not supported over HTTP.

          (–EDIT– autocorrect liked to change my acronym around somehow)

          1. 1

            Having read much during my holiday I’m trying to get to the point where I can control a game using the microphone as the only interface.

            Do elaborate on what that means. You talking “Go left, shoot, etc” spoken into one? Or are you using an Arduino-based system to convert an Xbox controller’s commands into raw sound that’s collected by a mic and turned into commands via a driver and/or library?

            1. 2

              Im creating a game based around sound, instead of trying to hoist the concept into an existing game. I’m starting small and just using frequency to change the position of the controller. I started looking into ASR using a convnet with the mfcc features but that will take a while, and I’m not sure it would be as fun as just whistling and howling into the mic. The game will be browser based, using the Web Audio API, so anyone will be able to fire it up on the web.

          2. 5

            First non-trivial code written in the last year… possibly two years, if mentoring junior devs through some iOS, some React, and some Git pains doesn’t count.

            Spent several hours making a music streaming Android app. Bootstrapping from almost zero knowledge, this meant several deep-dives in Activity/Service differences and lifecycles, Media Sessions, locks, network, various types of views, adapters, blah blah blah.

            Android’s complexity is boggling compared to every other stack I’ve used. (MacOS, Win16 & 32, AWT, WxWidgets, GTK2/3, Tk, various embedded toolkits, Web, iOS…) I’d complain in a blog post; but, I’m almost a decade late to the show. I (continue to) blame Java (mentality).

            Regardless: super excited. That rush with each piece of functionality coming online. That ever-growing todo list of polish and bugs. Oh yeah, this is why I love(d) programming.

            1. 1

              Spent several hours making a music streaming Android app.

              Several hours? Doesn’t sound like that much :p

              1. 1

                Don’t say that! ? I’m hoping it gets less painful with experience…

                Four hours reading docs. Two hours writing code.

                The official docs are copious but of varying quality. Interesting reading; but, very very very frustrating.

                1. 1

                  Depends if you mean a proof-of-concept thing or finished app. A finished app taking 6 hours I think is unheard of :D

                  1. 1

                    Proof-of-concept. I don’t expect any of this code to survive. (Famous last words.)

            2. 4

              I have a prototype of my functions-as-a-service tool ready to go. The first consumer is going to be the website, which made me realize I need a static deployment option that just uploads and serves static files via nginx. I have the project running on a remote server, it has an API, I can sign up using the API, and more! Once I get the website deployed, I’ll send out invites.

              If you’d like to learn more when I get it to a place where you can sign up and use it, sign up here: https://goo.gl/forms/gNTKb5LNz53BeE223

              1. 4

                Bringing up a new server for The Last Outpost MUD.

                Best parts: first server with no moving parts; super low power consumption; tiny size Intel NUC form factor; its Linux!

                Worst parts: fighting with Systemd; arguing with NetworkManager; the unpredictable “predictable interface names”; freshening up 8 year old config files.

                1. 2

                  telnet'ed in. who. Shocked to see another player. It’s great to know MUDs are still alive!

                  1. 1

                    Well come on in and play for a while! We’re always looking for more people to join in the adventure. MUD’s are a lot like Pac-Man. They aren’t nearly as crazy popular as they were when they first came out, but there are still some out there, they are still fun to play, and if you’ve never tried one, you are kind of missing out.

                    LO’s been online with players for 25 years. That alone makes it worth a look. :)

                    1. 1

                      I still telnet into jedimud for that nostalgia hit

                  2. 4

                    At work, I’m mostly a professional linter of YAML and JSON, chief plumber of poor life choices, and stoker of the burning dumpster fire that is modern computing.

                    Outside of work, I’ve been trying to learn things that appear to be less garbage than what I deal with at work; I’ve been slowly teaching myself Rust in off-on spurts, and recently decided to start trying to get into Illumos kernel development.

                    1. 3

                      Started hacking on an iOS app to export workouts as TCX files. (The format allows all the attributes I want, and is just XML. Way easier to work with than FIT.) For all that I love Healthkit and the privacy controls it affords as a consumer, boy is it a ballache to work with as a developer. (Especially a developer that’s used to being able to grab an API token and just cURL all the data he wants.)

                      Very impressed with Triton from messing with it last week, also trying to add transient sessions of VMs to it. So you can start a session, spin up a bunch of VMs within it and then once the session expires the system cleans up all those VMs for you. Great for testing/development purposes.

                      1. 3

                        For money, I might need to learn Scala in the near future. I’m going to be doing a comparative analysis of different tools to solve some problem and then pitch it to the team, who in turn will then probably pitch it to someone else. I’m also preparing the grounds for a new teammate coming in next week, I’m going to try to make his transition as fun as possible.

                        For not-money, I’m trying to fiddle around with OpenCart translations and paypal integrations for a non-profit, I’m planning to use that as a cheap ready-to-go subscription manager. Fills 90% or more of their needs. Hopefully I can get something out the door by end of week.

                        1. 3

                          Investigating free monads and tangential approaches and tools to improve the code for my AST querying tool (github here, written in Haskell, contributions etc. very welcome, though currently lacks a readme). The goal is to get rid of as much code in the IO monad as possible and get it ready for tests, benchmarks, and plugins for other languages.

                          Other than that, I will be changing some of the keybinding configuration machinery in my window manager to allow for a shorter configuration.

                          Then I’ll probably have some real-life stuff to get done, planning for work, a vacation and other things.

                          1. 3

                            Going through the Coursera Algorithm Design course and reading Kleinberg/Tardos. I’m about halfway through. Doing the programming assignments in Rust to get better at it.

                            1. 3

                              I’m into my fourth week of an operating systems course for my computer science degree. This week, I’m working on creating a better scheduler for the processors. Last week I created a first-come-first served scheduler. Its efficiency was highly dependent on order and types of processes. This week, I’m going to try my hand at creating a priority scheduler that will also have a system for preventing starvation.

                              1. 3

                                attending aws devops training course in sacramento. We’ll see…

                                1. 1

                                  Sounds like fun. /s

                                2. 3

                                  Data archeology, retroactively building a data dictionary for an undocumented set of tables and processes built three years ago by a contractor. It’s sort of masochistic, but at least the table structure fits my prejudices (no synthetic keys where not necessary! CREATE DOMAIN and CREATE TYPE! Yay!) I’m also working in Java, and the language makes me sad, but IntelliJ IDEA is a remarkably powerful tool.

                                  1. 3
                                    • Basking in the beauty of Fira Code’s ligatures in WebStorm with the Material Theme. Here’s a screenshot. [1]
                                    • Remove a lot of now-extraneous type assertions from my TypeScript Redux code. Hurrah for discriminant properties!
                                    • Setting up automated accessibility testing for our living style guides using the a11y cli tool so that Jenkins will fail our builds and keep us honest.

                                    [1] Note that in addition to enabling ligatures, I had to adjust the theme and turn off keyword bolding to actually see them.

                                    1. 3

                                      I’m doing a few things this week, work related I’m

                                      • Checking out how to make persistent work with a servant api for a haskell web app (Havent found anything better to manage the db, if anybody has an opinion on that).
                                      • Sick of manually testing the php app at my job, so I’ll try adding a few tests to the (laravel) app, I hope to have enough tests written to make it worth it to launch a CI tool next week.
                                      • Fixing a screw up with a contract… (Client didnt like the final design of his website, instead of calling me, he opts to make a much less functionnal website in wix, left me a little confused…)

                                      Non-work related I’m reading a bit more on haskell, joining a uni class for fun (Recommendation and rating systems, decided that, while I might not have the discipline for a full degree, there’s nothing wrong with following a class on my spare time) and playing around with freebsd.

                                      Also, I’m signing a lease on a new apartment tomorrow, I’ve been particularly anxious about this, as my girlfriend left me last month and I couldn’t pay my current apartment anymore.

                                      1. 2

                                        Continuing work on my distributed load tester/performance regression tool in elixir. This week I got a good start on exposing a super simple interface for building queries to leveldb which are just elixir streams. I was a little bit inspired by the concept of changefeeds in rethinkdb, but timeseries oriented, simpler, and with no join support. Events from a big process pool are dumped into leveldb and filtered/aggregated by a live query, then sent over a channel and plotted in the browser. The cool thing is that the same query can be applied to a database which is at rest, but the result is just a stream that terminates.

                                        Shepherding bytes around a cluster using erlang/elixir is fun.