1. 25

Feel free to tell what you plan on doing this weekend and even ask for help or feedback.

Please keep in mind it’s more than OK to do nothing at all too!


  2. 16

    Finding my will to live. Not in a serious sense, more as in it’s boring not finding interest in everything you used to do anymore.

    1. 10

      This might be a sign of developing depression… You should consider seeking help.

      1. 7

        Seconded – heck, even if you think things are going pretty good, if you can afford it, a check in with a therapist is great preventative maintenance. I know that since I started regularly seeing a therapist I have seen marked improvement in my experience of life. I’m happier, more productive, and more resilient to shit going haywire.

      2. 5

        might be an opportunity to revisit really old hobbies that you let go before. Got back into some PC gaming the past couple months after a couple years away and it feels good to be back

        1. 2

          I feel the same way between personal projects. For me, it always help to pick up a good fiction book and just relax for a couple of days.

          1. 2

            dude rocx! go talk to someone buddy, believe me, it’s better to do now rather than later on.

          2. 13

            After reading Engineering a Safer World (MIT press is currently listing a free PDF download there) I’ve been going down a bit of a rabbit hole for STAMP and applying it to hazard analysis with STPA. I’m applying it to the most safety critical paths in the sled database to help increase the chances that it will avoid unacceptable losses such as:

            • data loss (lots of drilling into the crash recovery subsystem)
            • non-linearizable (strictly serializable) data access in the lock-free & transactional bits
            • panics
            • disk space exhaustion
            • memory exhaustion

            It generally involves defining the losses you don’t want to happen, then defining the boundary of your system (usually what you have direct control over), then enumerating possible hazards in your system that may (together with environmental factors outside of your direct control) result in the defined unacceptable losses. Then enumerating the various control actions in place in the system, and for each one, asking:

            1. what hazards happen if this control action doesn’t happen (or doesn’t exist)?
            2. what hazards happen if this control action does happen (it is unsafe itself)?
            3. what hazards happen if this control action happens too early or too late?
            4. what hazards happen if this control action lasts too short or too long?

            In general, it treats safety as an emergent behavior of a hierarchical system where control is exerted across layers. A nuclear power plant’s safety is not dependent on a single pipe somewhere which may fail, but by the overall system’s ability to avoid unacceptable losses. Safety differs from reliability, and is sometimes in direct contrast to reliability. Sometimes it is safer to shut a system down and sacrifice its reliability. Sometimes by pushing reliability farther, it makes the failure conditions less safe when a failure does happen.

            This effort will hopefully help to make sled rock-solid by its expected 1.0 release date in January of 2021, 5 years after I began this project.

            Also, by boiling down the system’s safety requirements, I’m able to spot lots of opportunities for optimizing away work that does not directly contribute to these requirements. So, it can lead to optimization opportunities by just being more clear about the design requirements and just skipping things that don’t help to accomplish them.

            1. 9

              Working on a blog post that shows you how to use Haskell to implement a web app for rendering Markdown in real-time (parsing and rendering done in the browser, without talking to the backend). No JavaScript involved.

              1. 3

                That sounds like an interesting read. Looking forward to it.

                1. 2
              2. 8

                My friend sent me an ESP8266 and I have no idea what it is or what it does. (The package only contained the chip in an antistatic bag).

                So I’m going to figure all that out, build something tiny, and write how I did it.

                1. 2

                  Cool. The ESP-01 module? Or a dev board?

                  I have a bunch of them. Build various things, wireless temperature/humidity/pressure sensors for my parents that report to a server and plots in Grafana. Plus one to read out our electricity smart meter (also transfers over MQTT, stores in InfluxDB, and plots in Grafana).

                  1. 1

                    It’s the ESP-01 module.

                    That sounds cool! Is any of that open source? Temperature/humidity might be the first thing I attempt (I have an AM2302 kicking around somewhere).

                    I’ve also been looking at soil moisture sensors for some of our more sensitive plants.

                2. 7

                  Trying to rough out an essay titled “We Are Doing It Wrong”, with the premise that we’ve been developing software all these years completely backwards. Instead of building more and more complexities and tools for coding, we should have been building them for testing. Naming, factoring, scaling, components, etc? All of the concepts we’ve applied to code better apply to tests. We should deploy tests ahead of code, have the code catch up later (much as we used to do with code, sadly) Basically you can take a lot of the patterns we’ve been applying to coding and apply them to testing.

                  That’s not saying we should live in a test-dominated world. Far from it. But if we did tests primarily and code as an afterthought we’d probably stop coding as much junk all over the place as we currently do. We also should be able to share and re-use tests across a corporation. That’s probably much more doable than the long, long journey we’ve had trying to do the same thing with components.

                  It should be fun. Also, I think there are some .NET development patterns that might be fun to play with. Done correctly, you should be able to de-couple your tests from your types from your code, allow all three to either “join up” together for a deployable app, or go to other places enterprise-wide to participate in other activities. Plus, as long as the testing has standards, you can code the solution in any of a couple of dozen languages that .NET supports.

                  Meh. We’ll see.

                  1. 7

                    I’m definitely about less complexity and more quality. I don’t think tests should be prioritized. Instead, I’d put more effort into formal and informal specification of the code. Especially contracts. The reason is two fold:

                    1. Specs such as contracts assert correctness conditions over all inputs and behaviors. Tests just check the specific inputs and behaviors you thought about.

                    2. You can generate tests from contracts much more easily than doing it backwards. This is called spec-, model-, or property-based testing. Some research papers say “test, case generation.”

                    There’s a few more advantages. The specs and code can be fed into tools that mathematically prove them over all inputs without tests. SPARK, Frama-C, and Eiffel are examples. Finally, more of these tools are adding the ability to make the contract a runtime check to combine with guided and/or random testing. When the failure happens, it takes you exactly to the point of failure. So, you have test generation, proving, and runtime checks all from the same work you put in one time.

                    And, for stuff hard to specify, one can just use manual tests for that stuff. That’s on top of code review, static analysis, etc. Whatever the developer(s) has time and money for. I’ll throw in a paper that’s designed for a wide audience, including developers’ bosses. :)

                    1. 2

                      That’s excellent. I definitely don’t want to go completely “test all the things!”

                      What I didn’t want to say in my first comment, and actually didn’t even want to bring up in the essay if I didn’t have to, is the fact that if you go pure functional programming and DDD, the types file is the spec. There shouldn’t be very many tests in the tests file at all.

                      The key thing is to have a portable, non-language and non-solution-dependent way of testing whatever code you make. This gives tests the current freedom we enjoy in code.

                    2. 2

                      We should deploy tests ahead of code, have the code catch up later

                      There is a good reason that very few projects are developed this way. The technicalities of most of your requirements are completely unknown when the project is first started. Contrary to our imaginations, software is not designed then written, its design is constantly revised. For most real world projects, it’s a huge waste of time to write tests ahead of time.

                      1. 1

                        I think you missed it. I’m not saying that we should test separately from coding, I’m saying that the tests that are part of our code, whatever tests those may be, should be completely decoupled from the code itself so that it can move along in the integration pipeline ahead of the actual code.

                        So while I’m coding Foo, I also make Foo-Tests (whatever that might be. Maybe just one test.) Foo-Tests should immediately move on along to wherever Foo might need to end up. Moreover, when it comes time to write Foo2, Foo-Tests should be just another component like any other you might use to make Foo. We don’t have that kind of easy modularity now.

                        1. 2

                          should be completely decoupled from the code itself so that it can move along in the integration pipeline ahead of the actual code

                          There is no such thing as a completely decoupled test. At the very least, tests use the interface provided by the module or system its testing. Interfaces change all the time during development, so tests will always play catch up, either by delaying them, or by rewriting them because you mispredicted your interface.

                      2. 1

                        I think that there’s a strong case that programmers should put more effort put into testing and tooling.

                        Today’s tooling is abysmal relative to what we can (in terms of technology (available compute), knowledge (of the techniques necessary to implement), and manpower (computing is more than old enough that this stuff could have been built in the time that we’ve had to build it)) and should have by now. Few REPLs (where are the REPLs for Rust? Java? C(++)? Nim? Zig?), virtually non-existent livepatching, bad debuggers, few incremental compilers, little whole-program optimization, file-based tooling, bad inspectors (tool that displays and edits in-memory data), few (if any) state-space analysis tools, few visualization tools (in terms of code and data both), lack of memory profilers, terrible editor integration for most languages (LSP is new, immature, under-used, and far behind SLIME), no structure editors! Edit: very little collaborative editing, unnecessarily slow+memory-intensive editors+tools, pervasive text-based tooling (editors, version control, linters) instead of structure-based tooling.

                        Common Lisp is way better than most languages in this regard (REPLs and livepatching for compiler implementations, SLIME is light-years ahead of most tooling), but it’s still decades behind what we could have had by now.

                        Edit: with that said, please let me know when you’ve finished your essay, because I’m very unfamiliar with testing and am interested in hearing your thoughts.

                      3. 6

                        I started working on a traditional roguelike in Common Lisp a week or so ago, so I’ll probably continue to work on that. My goal is to somehow combine roguelike and souls-like gameplay/design and make it fun, but we’ll see how that goes.

                        I also have a book to review before a publisher’s deadline and another book coming in the mail, so I will do some reading as well.

                        1. 4

                          Firstly, a parser for IRC in Erlang, then an application that allows you to spin bots. The hope is that it will grow into something that allows there to be a reasonable amount of synthetic traffic on an IRC network for testing.

                          1. 4

                            Trying to finish my hypervisor setup and starting to migrate various cloud VMs onto it. It’s a dedicated Hetzner server with Debian stable and libvirt. I opted out of libvirt’s iptables shenanigans and to use manually administered nftables rules for the network instead. Works really well so far.

                            1. 4

                              I don’t know: I have project overload. I’d like to work on a few of my existing projects (regex engine and constraint based property testing are calling my name). I also recently started writing a quick overview of how much memory common objects use in Hotspot. Then Rachel’s post made me think writing a simple server from scratch would be a nice exercise: https://lobste.rs/s/mk1jso/old_box_dumb_code_few_thousand.

                              1. 4

                                I’m working on my CodeMirror alternative editor for the browser: https://medv.io/codejar/

                                Main difference is what it’s extremely light. Only 2kb.

                                1. 3

                                  I’ve been trying to get a handle on some COBOL and plan to share my experience via silly examples. Trying not to read the newspaper. It makes me cry. This truly is a rotten simulation. But, must remember: Tyranny, like hell, is not easily conquered; yet we have this consolation with us, that the harder the conflict, the more glorious the triumph..

                                  1. 2

                                    Which COBOL implementation are you using?

                                    1. 2

                                      GnuCOBOL on my personal machines. IBM also allows access to a mainframe (part of their MTM learning system) that has Enterprise COBOL for z/OS.

                                      1. 2

                                        I’m guessing you mean this. I didn’t even know about it. I’m sure there’s job hunters and curious people down here that will enjoy that. Thanks for the tip!

                                        1. 2

                                          Yep, it’s pretty cool. I plan to write up some stuff I learned from it. Very informative and approachable. Some annoying marketing creeps in at odd places, but whatever.

                                          1. 1

                                            I plan to write up some stuff I learned from it.

                                            Good idea. I’d like to read that.

                                  2. 3
                                    • Writing (page-based) memory allocators in C on Windows and Linux.
                                    • Learning more x64. I’m slowly being able to actually read it without a reference.
                                    • Maybe learning about my processor behavior on projects with https://github.com/opcm/pcm
                                    1. 3

                                      Spending a birthday in quarantine and enjoying the end of my sophomore year! Only two left (bar grad school)!

                                      I’ve been reading a million papers on dependent type theory and I’m planning out building an implementation of my own. I have a few ideas of how to make it run efficiently, but we’ll see if they stick.

                                      1. 3

                                        I’ve gotta put in some time standing up some infra for work this weekend, bit of a pain, but the alternative is working through a morass of PMs trying to schedule us all to death.

                                        Other than that, I’ve got a new motor for my ancient tablesaw (the old motor finally gave up the ghost after 75 years or so, thought I blew the starter cap but it looks like a proper short somewhere in it). So I’ll be replacing that and finishing up a gardening workbench for my seedling closet project. It may/may not snow here on saturday though so my plans might abruptly change due to it snowing in May.

                                        New England Weather is the best.

                                        1. 3

                                          Work on Pipelang went super well last weekend. There’s still stuff to do, but it’s basically in a place where I can incorporate it into Remits as the query language. So I’ll be doing that!

                                          We’re not quite there, but Remits is almost to the point where we can start thinking about docs and slapping on a 0.0.1-alpha-alpha-super-alpha version number. I’m looking forward to getting it working in a streamlined enough way that people can clone the repo and just casually try it out without having to reverse engineer/debug stuff.

                                          1. 3

                                            Attending !!Con (virtually).

                                            Noodling around with the proto-game that I made for Bitter Jam.

                                            Probably clean around the house (not just straighten but wipe things down, etc.). All the more important now that I stay here ~24/7 and necessarily more frequent for the same reason.

                                            1. 1

                                              Attending !!Con (virtually).

                                              I hope !!Con will post the videos faster than in years past. I’d love to sit through the livestreams, but I’m super busy this weekend.

                                              1. 1

                                                The livestream recordings are online. Here you go!

                                                Saturday: https://www.youtube.com/watch?v=QEZ0N0rrbL0

                                                Sunday: https://www.youtube.com/watch?v=EReoVpb9LJo

                                                1. 1

                                                  Thanks, friend!

                                            2. 3

                                              Finishing up my postmortem on writing a Wayland compositor in Rust, maybe playing around a bit more with graphics programming. OpenGL ES 2 is the worst, but if I support it then I can run my stuff on my Pinebook Pro. On the other hand, maybe by the time I actually release this thing the Panfrost driver will support ES 3.

                                              Maybe I should start learning CAD. OpenSCAD looks cool, and I have an idea for building a small drone that I want to try out. Being able to 3D print parts would be very useful.

                                              1. 3

                                                I’m thinking about how I can make the leader board, for at least one of the days of advent of code, this December. Still can’t figure out what I need to do to get on there.

                                                It’s been a small goal of mine for the last year and a half or so.

                                                1. 3

                                                  I just finished adding a lot of chord types/qualities to my side project, Glorious Voice Leader. I’m hoping to write an article about how I struggled to generate those chord qualities algorithmically, and the partially manual solution I finally landed on. I’m also hoping to start on some chord substitution ideas I’ve been thinking about for quite a while.

                                                  1. 2

                                                    Not writing code because this is already an unhealthy amount of time I’m spending on the computer

                                                    1. 2

                                                      I’m working on a few different things:

                                                      • My personal website (mostly a blog)
                                                      • A project based around git repos
                                                      • An event-store database
                                                      1. 2
                                                        1. 2

                                                          Started #100DaysToOffload, and then stopped. I realized I wasn’t writing quality content, and mostly just expanding small thoughts. Maybe some like it, but I didn’t enjoy it.

                                                          1. 2

                                                            I rented a studio for myself last month and I’m finally getting around to setup some equipment in it this weekend. I needed a new desk and I found a spare door and some large metal brackets that should work nicely. I’ll be building that and possibly making some Mandalorian armor with my friend.

                                                            1. 2

                                                              Writing a console music visualizer for my Calculus 2 final project.

                                                              1. 2

                                                                I plan on trying to finish up a first pass at a website for helping my wife and I keep an watering schedule for our cacti and succulents and using Pushover to send us notifications when the plants are getting close to needing water. That and setting up a futon in the office/art room.

                                                                1. 2

                                                                  Hopefully working on some of my classwork. I’m an ECE student at my local university in our “design verification & validation” master’s track and am currently taking a class that’s (partially) about accelerating simulation-based circuit design verification using an “emulator” that’s a bunch of FPGA-like special logic packed into a large (and very expensive) black box.

                                                                  Using the emulator requires you to spend some time breaking up your designs such that there’s a synthesizable component that consists of the design + synthesizable part of the testbench that runs on the emulator and a non-synthesizable or complex part that runs on the “host” in software, and then writing code that allows the two to communicate (efficiently). It’s an extremely neat piece of hardware, and I’m very fortunate that my uni actually has access to one. They’ve spent a lot of time making sure that the tooling is less terrible than most EDA/CAD tools, which is amazing (as ECE tooling is orders of magnitude worse than the already-bad software engineering tools available today).

                                                                  1. 2

                                                                    Bloodborne has begun! Already past two bosses and onto the third somewhere around Old Yharnam…

                                                                    Not sure what else. We’re in an awkward time, with everything going on and Summer around the corner. What keeps me on the positive side is knowing there are tons of others in the same position.

                                                                    Oh right, I might use my new hotair rework station to fix some things! I got a 858D clone so I need to open it (already did) and verify it won’t kill me. So far everything seems ok but I always like to verify with someone from ##electronics on Freenode.

                                                                    Hope you all have a nice weekend. Strength and good vibes being sent to all.

                                                                    1. 2

                                                                      Going hiking.

                                                                      Also, trying to debug some weird issue in my Game Boy emulator, where some apparently unrelated code is disabling the LCD in the bootrom. I think I am missing setting some flags, somewhere…

                                                                      1. 2

                                                                        Rust, you guys keep making me look into it

                                                                        1. 2

                                                                          Mainly bike stuff. The last few parts arrive this week, so Saturday I’m rebuilding a bike and going for some short test rides around town. Then on Sunday I’m going for a longer ride.

                                                                          And I still have pictures to upload from our CO trail ride last summer, so I’d like to finish that up. I’m mostly done, and that’s motivating me to finish.

                                                                          Also, I’ve been going through some older projects and cleaning up and refactoring them a bit. Kind of like spring cleaning, I guess.

                                                                          1. 2
                                                                            1. Reading through a few more chapters of Mark Burgess’s A Treatise on Systems. It’s slow going, but I’m enjoying it quite a bit. He brings an interesting physics-inspired perspective to observing and analyzing the behavior of computing systems, which I appreciate a ton. (Being an exile from physics myself.)
                                                                            2. When I lose focus on that, I have a stack of fiction that I keep meaning to get to, and I’ll probably take a book off the top of the stack. I think the next one there is Scalzi’s latest, which should hopefully be entertaining.
                                                                            3. When I lose focus on that (I’ve been having trouble with focus during this pandemic :P)… well, I know a nice red wine chocolate cake recipe, and I’ll probably need dessert at that point.

                                                                            I’ve also been working on blogging more often, trying to tell myself that small entries are ok, so I’ll likely attempt to write one or two posts over the weekend.

                                                                            1. 2

                                                                              I have been working in Lua and C a lot for the past two years for work. But have recently been interested in Lisps, Clojure and functional programming on the personal end. So, this weekend I’m going to look deeper at fennel-lang and write something small in it. I think it might be a big help! We shall see.

                                                                              1. 1

                                                                                Working on an ordering website for a local food cooperative (at the moment they’re using google sheets), learning more about RISC-V and reading Programming Algorithms by Vsevolod Domkin! Also been learning Korean slowly but surely over the past month or so, I’ll be doing some of that too :)

                                                                                1. 1

                                                                                  It’s a bank holiday weekend here in the UK. I didn’t want to get involved in the VE stuff going on yesterday, so I spent most of the day playing old Amiga games and tinkering on the Amiga 4000.

                                                                                  This weekend I’m hoping to find the time to build a highly optimised and opinionated URL shortener. It’s a small project but one I hope will let me practice some coding and architecture muscles I’ve not practiced for a while.

                                                                                  1. 1

                                                                                    Reading some more of the UEFI specification for my goefi project. It’s sorta become the relaxing slow phased project the past 2 weeks. It’s frankly a lot of fun to read specifications, implement the structs and parse the relevant files on your system and see results.

                                                                                    I might be slow, but I recently learned about gpg --auto-key-locate and --locate-key which supports a lot more then just WKD. Been updating my ansible roles and DNS entries to see how much of the different fetching methods I can support.

                                                                                    1. 1

                                                                                      Doing a little bit of regular work to support an internal team onboarding new staff… it’s a small ask that would help them a lot, and it’s the sort of thing I can do in a couple of hours and genuinely enjoy.

                                                                                      Then hopefully getting out into the mountains around SLC and skiing a bit. There’s a loop here where you climb up an easy low-grade rock face and ski down a couloir that I’ve been eyeing for a few years now.

                                                                                      1. 1

                                                                                        Working on a solution for collecting stats from my blog post. Currently I’m after the basic ones, referer info, country, most popular entries, erros, etc. I was relying on Google Analytics, but it is the only javascript on my website and I want to remove it. My blog is running in a Github Pages so there is no nginx/apache2 logs to process.

                                                                                        1. 1

                                                                                          Writing a lot of Go and playing Magic the Gathering

                                                                                          1. 1

                                                                                            Working on improving a movie recommendation algorithm. Currently it works decently, but movies with a few ratings don’t perform so well: https://stollenga.dev/movie_recommendation

                                                                                            1. 1

                                                                                              I’m part way through getting my old MBP 8,3 to run as a Debian host for some VMs (including macOS) so hopefully I’ll get that at least progressed a little more, even if not finished.