1. 11

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. 13

    Reimplementing Sonic the Hedgehog 2 in Haskell. Picking it back up after playing around with it a while ago:


    I have bits of decompression, colour palettes, collision data, block mappings, tile mappings, etc. this week I’m trying to connect those together so I can fully render a level.

    1. 4

      Oh sorry before people ask for source, this is what I’ve pushed so far:



    2. 9

      I’m buying a fucking house. Today. Then I’m going to be cleaning it up. Moving in the next couple weeks.

      UPDATE - just came from the closing meeting: https://youtu.be/4-0utDrWa5w

      1. 3


        1. 2


      2. 9

        Last week of EMT classes. Just a practical and written final left and I’ll be qualified to apply for a state license. Then immediately shunting off to Boston for the Future of Alloy conference. I just found out that I’m speaking there, which is… good? But a little surprising.

        For personal projects, I started a big Theorem Prover Showdown on Twitter. I have a postmortem to write and about 50 versions of leftpad to curate.

        1. 3

          I definitely should get a Twitter given all the fun I missed out on here. Going through the whole discussion right now. Someone even brought up Milawa I’ve often posted. Although, I semi-counter that Kumar’s thesis is so brilliant that I didn’t trust it because it seemed too brilliant with circular forms of reasoning. Easy to trick oneself with things depending on themselves and such. Was I really seeing proof of his claims or just not smart enough to spot the flaws in them? I’d probably need to practice formal verification for years before I could be sure. ;)

          Regardless, Ramana Kumar, Jared Davis, and Magnus Myreen are all among my favorite researchers, though, given they’re kicking ass on some of hardest problems in verification from theorem provers all the way to assembly code. Davis, the Milawa guy, also extended ACL2 to replace tools that cost five or six digits a seat at Centaur: the third, x86, CPU vendor most don’t know about. Myreen was recently experimenting on something like Bluespec in HOL. I hope they all stay at it another decade cuz who knows what might come out of it. Exciting stuff.

          Edit: I’m saving this since I think it nicely captures a larger trend in CompSci:

          “I’m doing a writeup on this; all the opiners didn’t write proofs and all the people who wrote proofs didn’t opine.” (hwayne)

        2. 15

          I’m going to be honest: most of my energy this week will be spent waiting for this week to end.

          1. 6

            Same. I often read these threads and despair that I’m not doing enough with my life. At least we can commiserate together.

            1. 2

              I am taking some comfort in knowing that I’ll soon be able to play Sonic the Hedgehog because @puffnfresh is having a better week than I am. :)

          2. 8

            I did a full write-up of my reversing of a Quake cracking program, and thought that’s right up the alley of PoC||GTFO so submitted it there.

            With a break from that, probably gonna do some sewing, then get started on learning to write a Nintendo NES game is assembly.

            1. 5

              I’m still working on my federated link aggregator. Most of the Datastructures and internal Layout are done, what’s missing (like last time) is putting more wires between all the pieces. I’ve also worked a lot on the UI though progress on that front is a bit slow. I’m orienting myself on older reddit versions coupled with CSS Grid to make it less weird and easier to mush into a mobile interface. While I do have JS I’m reducing that while I dev so I can make sure everything works without JS and then I add JS on top.

              For Uni I’m also implementing compression algorithms. First one is a LZ77 compression (which was hard) and second (in progress) is a Static Dictionary (think brotli). Quite fun.

              1. 4

                Working on open source project, nuster, a cache server based on HAProxy.

                Update to HAProxy v1.7.10, change config directives, remove share on|off mode, refactor code for next HAProxy v1.8 merging.

                Finished v1.7.x version, will move to HAProxy v1.8.x(v1.8.8)

                1. 4

                  Last week

                  This week

                  • Clean up the SDL backend made for guitktk last week. Will probably not maintain that backend after this point.
                  • Maybe think of an actual way to add animations to the system (that makes use of work already done).
                  1. 4

                    Going to finish small websocket to kafka project.

                    1. 4

                      In my free time I’m trying to write an OS targeting little ARM microcontrollers (currently working with Teensy 3.6, and hopefully RPI0 soon enough). Work has finally quieted down so I hopefully have energy in the evening to continue.

                      This week, I’m still trying to get an LED to blink from the bare metal. I’m stealing using PJRC’s Arduino libraries for the Teensy 3.6 and incorporating a lot of it into my codebase. I’m learning a lot about the world of watchdog timers, crossbars, and confusing hardware defaults. It’s a lot of fun, even if the fun comes from complaining.

                      I’m still not sure what I want the OS itself to do, though. I know I want to

                      1. make it a toy project exploring stupid ideas (what if the filesystem was like JSON?)
                      2. make it easy to plug ‘n’ play user-space software with peripherals like GPIO

                      but everything else is up in the air. Maybe I’ll figure out what I want as I write it. I’ve never written a kernel or an OS before, so it’s all a learning experience.

                      1. 4

                        I hacked up a small tool the other day that would buffer output from a command into memory until it receives a signal to reconnect to stdout, when it would dump everything that was output in the interim. I want to integrate this into dtach so emacs can have resumable shell sessions on remote hosts for TRAMP workflows.

                        Let’s just say it’s a huge distraction from the work I actually need to do and I hope I don’t make too much progress on it.

                        1. 2

                          The link to your tool is currently 404ed

                          1. 1

                            Oops, had no http on it: https://github.com/codemac/sigbuffer

                            It’s a dumb tool, but it was just a proof of concept that I knew how to use dup2+pipe again.

                        2. 4

                          I’m currently working on my automatic manga scanlator, warning NSFW. users upload their own content for scanlating. https://robotscanlations.com

                          Progress is slow due to all of the different manga styles but by running each page through the system multiple times with different parameters and with a growing set of rules it’s becoming more reliable and general.

                          1. 3

                            Finals week is coming up so now one of our semester-long projects is coming to a close. One of the professors wanted a new interface for the list of research classes by making it searchable. Actually, they just wanted a mockup of one but came Wales or high water we made it semifunctional. Unfortunately it’s all done on private resources (private hosting, school-provided private GitHub repo, &c) so there’s not much of anything to show.

                            Either way this gave me an excuse to learn me some Ruby and to be glad summer’s coming up. “Hey Mikey, Rocky likes it!”

                            1. 0
                            2. 3

                              At work, migration time for an embedded project: moving from a buildroot-based system to a bunch of custom layers for Yocto. Hope to be finished by Friday.

                              Hobby, cosmetic touches to the BTC trader bot wrt instruments. Otherwise runs in the black for a while now. Thinking to add some public facing subscriptions/notifications to it.

                              1. 3

                                I spent this weekend updating my personal homepage. I’m simplifying the server + JS, and making a nice UI with CSS Grid.

                                I start a new job in 3 weeks, and am moving countries for it, so it’s the perfect procrastination on the real work I need to do.

                                1. 3

                                  Far too dad-brained to do anything ambitious this week. So my goal is simple: learn how to process errors in Rust when I write wrappers that get a Result and return a Result, without calling unwrap, and without discarding data from the Error structs.

                                  And of course it must build. I believe this translates to getting good with error-chain.

                                  1. 3

                                    Work: Attempting to do some pair programming with a colleague to help flesh out some service integrations into our new Magento 2 instance. Move my code out of a monolith repo into module repos to utilize composer (and stop fucking with environment related issues), finish up some tickets I have been sitting on.

                                    Life: Writing comedy, editing comedy, sleeping, and hopfully cooking a god damn meal for myself (its been weeks!)

                                    1. 3

                                      We’re into week two of my coworker’s Scala class, and I’m TA-ing, so that’s fun. I still prefer the ML style, because objects blech but eh whatever. I also handled some actual real-live engineering, including submitting a pull request and everything, so it’s almost like I’m a developer again.

                                      At home, the weather has changed finally and so I can start taking the kiddos out to the park, which is basically all I want to do. Between that and the NBA playoffs, I’m being very deliberately not online during my evenings.

                                      1. 3

                                        Working on adapting the sample code in Data Laced with History to Rust as part of a prototype. It’s been a great Rust refresher, although translating the Swift paradigms has lead down some rabbit holes.

                                        1. 3

                                          I’m working on my Elm-based static site generator and my Elm book, as well as some less fun consulting bits.

                                          1. 2

                                            I am still hacking on ISETL.
                                            I also started porting an FP interpreter to MacOS.
                                            The repository is here.

                                            1. 2

                                              Still working on my bachelor thesis. The title is Application of Formal Methos to OpenBSD Network Modules. Bluhm and a PhD Student called Thomas from SoSy-Lab at LMU are helping me.

                                              Last week I was busy preprocessing networking C code so the verification tool (CPAchecker) could understand it. Problems arised: kernel memory management, machine dependent code, where to start, where to stop, what to ignore. Bluhm suggested starting with the IP input queue. I ended the week with reading ip_input.c. Turns out there is already a repo with preprocessed files of src. (Thanks Bluhm and Zaur)

                                              This week I will need to think about what to stub, where to stop and what to do about ip_init.

                                              1. 1

                                                Still continuing from last week

                                                At this point it’s down to integration points between the major components:

                                                • Failover Manager: configures keepalived, synced to n-machines, and triggers enabled state hooks
                                                • Proxy Manager: configures HAProxy with various service components, synced to n-machines
                                                • Certificate Manager: (optionally) requests via Certbot, and converts + builds chains/combinations of TLS certificate and key materials, synced to n-machines
                                                • PXC Manager: configures a Persona XtraDB Cluster of n nodes (where nodes can be running either PXC or Gallera Arbitrator)

                                                The integration points are around things such as:

                                                • Cetting the certificate for TLS encrypted mysql connections & cluster communication, in the right format, and on all the nodes.
                                                • Configuring the Load Balancer nodes to route traffic to non-arbitrator PXC nodes, with useful health checking
                                                • Configuring PXC nodes to accept PROXY protocol connections from the Load Balancer nodes only
                                                • Ensuring Gallera Arbitrator used on a failover/Load Balancer cluster only runs on the current keepalived ‘master’

                                                It’s taken longer than expected to get this far, but it’s definitely been a worthwhile endeavour, and will soon allow a client’s site to migrate off a (remotely hosted) RDS instance, to a local, reproducible setup.

                                                1. 1