Threads for tenken

  1. 6
    • resting
    • cleaning my house
    1. 1

      That’s very grown up of you, looks like my plan ;)

    1. 1
      • working on a Drupal 7 t Drupal 9 upgrade. Adding a import parallel drush command.
      • Trying to play with libgdx to introduce my nephew to game dev stuff
      1. 1

        Gearing up for the second edition of our Offbeat Computation Club meetings. The first series of meetings was about analytic number theory. After 120 meetings across 7 months, it was finally concluded in the beginning of this month. The next series of meetings is going to be on solving the CSES Problem Set. The book club meetings will focus on going through a few pages of the CSES handbook together in each meeting as well as on discussing techniques to solve each problem in the problem set. This topic was chosen by popular demand from the current members of the club.

        I have always been fond of puzzles (mathematical, programming, or otherwise) since my childhood days despite being a considerable time sink and despite having very little utility in life. Nevertheless, I enjoy doing it, so one of the things I am specifically interested in this series of meetings is to look at the same problem from multiple perspectives thus gaining a deeper appreciation of the underlying patterns that lead to interesting mathematical properties related to the problem. I am noting down some of these interesting patterns and observations as virtual boards at https://offbeat.cc/cses/boards/#problem-notes.

        I have been working on our club website and the schedule for the last few days. I am hoping to make the website completely ready in this weekend. If this kind of club activity sounds like fun to you and you want to participate in our meetings, see https://offbeat.cc/cses/ for more details.

        1. 1

          Hi, I’m potentially interested in attending, but the website isn’t very clear on what section of the book and/or what problems will be discussed at the meet. Could you clarify, please?

          1. 1

            Thank you for your interest in the book club! It is very likely that we will read the entire book and discuss all the problems in the problem set.

            The format of the meetings is going to be quite similar to how it was for our previous series of meetings on analytic number theory. The blog post “Our 100th Meeting” offers a glimpse into our meeting style and format.

            The meeting log of previous meetings shows that we read about 2-3 pages of the book in every meeting. It is very likely going to be similar for this new series of meetings on the CSES problem set and handbook. However, in this new series of meeting we will also focus a lot on solving problems and seeing a problem from different perspectives. We have decided to spend about 20% time reading the book and 80% time discussing the problems.

            1. 1

              Ah, so you read the book during the meeting rather than in advance? And solving the problems during the meeting, too?

              I am more used to clubs where you read a set text (a book, or a chapter, or an article) in advance and then discuss together, but I am still interested, maybe see you on Tuesday :)

              1. 1

                The most serious participants do read the book in advance. As a meeting host, I too read the book in advance. But we read the book together once again line by line during the meetings. We pause at the end of every section to give everyone a chance to add their comments and insights about the section.

                So essentially the meeting host and the serious participants do a second pass over the chapters of the book during the meetings. The first pass is typically done privately in advance. For something like analytic number theory where the textbook was very dense, I think a two pass detailed reading approach like this was very helpful in thoroughly understanding the material. I am not yet sure if the same approach would work well for a less dense material like the CSES problem set and handbook. We will see what works well in our meetings and what does not as we make progress. We will then fine tune the meeting style accordingly.

          2. 1

            What (coding) language do you speak in the meeting itself? C++?

          1. 4

            Cleaning my house. If the weather looks good for Monday, prep my new (used) kayak to try to go fishing Monday on my maiden fishing trip with it :)

            1. 14

              realistic-looking load

              I like https://locust.io because it enables me to simulate not only simple requests to a bunch of URLs but scripted workflows like different users, logging in or not, browsing pages in different order, and so on. Depending on your app, its performance characteristics and caching implementations that might make a difference.

              1. 1

                Yeah, I’ve been happy with Locust in two different incarnations of a load-testing tool at my current job.

                1. 1

                  Same.

                1. 2
                  • logitech K480 at home
                  • logitech K780 at work

                  … I also own Das Keyboard v1. I prefer to use 104 full keyboards … But these logitech boards are 1) bluetooth 2) support multiple bt pairings …

                  1. 3

                    Setting up a Drupal 8/9 project on gitlabci and integrating renovate not.

                    1. 8

                      There’s an existing open source tool called renovate that is highly configurable and supports a lot of platforms and package managers: https://github.com/renovatebot/renovate

                      1. 1

                        I installed this this week for our local gitlabci infrastructure. Added it to 2 projects thus far via a yaml partial include. Working great so far.

                        1. 1

                          Thanks for sharing that. I really like the idea. I wonder how hard it’d be to make it propose its patches using git-send-email instead of pull requests/merge requests.

                        1. 7

                          In scenarios which precise better optimization of which tools are available, sure, let’s use containerd (for example) instead of Docker in our production machines for running Kubernetes.

                          But, sometimes, “monolithic” tools make sense. I want to use containers in my development workflow, which has a lot of requirements (running, building, inspecting…), what I need? Just Docker. It’s a no-brainer. And thanks to the OCI specification, that setup can generate images that run in production with a different set of tools.

                          People tend to call monolithic to stuff like if it were an obviously bad thing, but those exists because, sometimes, it just makes sense to have some set of functionalities tied together in a single package that is easier to reason about than a multitude of different packages with their different versions.

                          1. 4

                            I would be more sympathetic to this argument if Docker wasn’t a gigantic pain in the ass to use for local development.

                            1. 3

                              I agree. Docker belongs on the CI server, not on your laptop. (Or in prod, for that matter.)

                              1. 1

                                how’s that?

                                1. 3
                                  1. It’s slow
                                  2. It’s a memory hog
                                  3. It makes every single thing you want to do at least twice as complicated
                              2. 2

                                But, sometimes, “monolithic” tools make sense

                                I would even say than it’s the correct approach for innovation, right after R&D and through product differentiation. They went through that quite well. Docker’s problem is no longer an architecture nor an implementation problem, more that their innovation has evolved into a commodity.

                              1. 2

                                trying to relax.

                                1. 4
                                  • not working … hopefully.
                                  • Hopefully Saturday 2-3pm replacement washing machine is installed!
                                  • Clean condo
                                  • Rest
                                  1. 1

                                    Launching a site for campus, with a major change from creating accounts on first login…. To pre-provisioning accounts prior … Launches on Thursday for 20k+ students.

                                    1. 2
                                      • call contractor to inquire on shower/tub replacement.
                                      • hopefully hear from car dealer on trade-in amount ..
                                      • Clean house
                                      • Install $16 wireless doorbell from Amazon. I have a security door, going to strap or afix doorbell button to screen of outer door maybe …
                                      • Rest
                                      • See friends doggies?!
                                      • Check bills and stuff
                                      1. 2
                                        • starting work tasks for work this week after recovering from an illness.
                                        • helping parents
                                        1. 1

                                          At home network devices are given DBZ character names, eg Dende, Trunks, Vegeta … My WiFi ssid is dbzuniverse[2k|5k]

                                          At current work onprem servers tended to be named by planets or constellations.

                                          At previous work for many years servers were given airplane names; P38, B12, F16 ….

                                          1. 2
                                            • play a little with gitlabci and pantheon.
                                            • visit family.
                                            • research 1 or 2 new chess openings for myself …
                                            1. 2
                                              • researching D7 to D8 site upgrade.
                                              • Small tweak to a custom module to release Monday or Tuesday.
                                              • Hike
                                              1. 3

                                                I have started studying Kobudo in the last few months once a month in a monthly 5 hour class setting. I’m debating picking 1 of my own off weekends to devote another 5 hours of training to Kobudo or other martial arts I study.

                                                Otherwise, sleep sounds good :)

                                                1. 2

                                                  Making some automation pipelines using GitlabCI, Symfony Framework and Bash use LTS version numbers…

                                                  1. 19

                                                    I’m going to address the title directly:

                                                    What can software authors do to help Linux distributions and BSDs package their software?

                                                    Step one is actually build your software on more than Linux. Shake out the Linuxisms by building on the BSDs. This will uncover often trivial but common issues like:

                                                    • Assuming make Is GNU make
                                                    • Using behaviours of GNU sed
                                                    • Assuming /bin/sh is `bash’
                                                    • Hardcoding paths to tools that are in different locations on BSD for example /usr/bin vs. /usr/local/bin
                                                    • Relying on systemd being present. Consider OpenRC, runit, BSD init systems.
                                                    • Relying on Docker for development workflows. Instead document the process for when Docker is not an option.
                                                    1. 3

                                                      Assuming make Is GNU make

                                                      I wrote a crypto library. Single file, zero dependency. Not even libc. I do need to perform some tests, though. And even for such a simple thing, not assuming GNU make is just too hard. How come the following does not even work?

                                                      test.out : lib/test.o  lib/monocypher.o lib/sha512.o
                                                      speed.out: lib/speed.o lib/monocypher.o lib/sha512.o
                                                      test.out speed.out:
                                                      	$(CC) $(CFLAGS) -I src -I src/optional -o $@ $^
                                                      

                                                      If I recall correctly, $^ is not available on good old obsolete pmake. So what do I do, put every single dependency list in a variable?

                                                      Another little hassle:

                                                      ifeq ($(findstring -DED25519_SHA512, $(CFLAGS)),)
                                                      LINK_SHA512=
                                                      else
                                                      LINK_SHA512=lib/sha512.o
                                                      endif
                                                      

                                                      Depending on that pre-processor flag, I need to include the optional code… or not. Is there any “portable” way to do so?


                                                      Sure, assuming GNU everywhere is not a good idea. But some GNU extensions are just such a no brainer. Why don’t BSD tools adopt some of them? Why not even $^?

                                                      1. 6

                                                        Feel free to assume use GNU make (IMO), just make sure your sub-invocations are $(MAKE) instead of “make”.

                                                        1. 3

                                                          That could work indeed. My current makefiles aren’t recursive, but I’ll keep that in mind, thanks.

                                                          1. 2

                                                            Same with bash instead of sh: it’s fine to use bash, just be conscious about it (“I want bash feature X”) and use #!/usr/bin/env bash. The problem is assuming /bin/sh is /bin/bash, which can lead to some rather confusing errors.

                                                          2. 3

                                                            So my suggestion wasn’t to not use GNU make it was to not assume make == GNU make. What this means is if building requires GNU make then call that out explicitly in build instructions. This makes it easier for packagers to know they need to add a dependency on gmake.

                                                            If there are scripts or other automation that call make then allow the name of the command to easily be overridden or check for gmake and use that if found rather than calling make directly and assuming it’s gnu make.

                                                          3. 1

                                                            Why would any generic userland application want to build their software beyond Linux environments?! Eg, is Slack or Skype actively doing this? If anything I would assume attempting to assure my application builds against legacy Linux build tools (and yes even assuming GNU make) is a good thing…

                                                            To ask the question another, what segment of my user base is BSD based? I suppose you’re answering wrt the BSD adoption portion of the parent question. I guess my own comment is that unless ones software application is massively popular all the genericity considerations of the build tooling you’ve described sounds like massive overkill.

                                                            1. 4

                                                              I think if you take this argument one step further, you end up building only for Windows. That’s not a fun world. Would we then just invest a bunch of effort into Wine? It’s what we used to do.

                                                              Portability allows for using your favorite platform. It’s something we all have valued from time to time.

                                                              If you make the right choices, you can develop very portable software these days in most languages. So, the way I read it, learning how to make those choices is what the OP is suggesting.