1. 1

    Homegrown application that just generates a xxxxxxx.md file in a directory for me (~/drafts/) and lets me start writing. I use wiki style links to link things together and sometimes rename files so they have titles that make sense. But basically my workflow is:

    1. draft create
    2. Write notes (put some optional metatdata in toml at the top) using $VISUAL
    3. rinse and repeat.

    Use grep to search for stuff. I have one file that I use frequently: TODO.md the rest are mostly just random numbers with an .md extension unless they are important enough for me to actually give a name to.

    1. 3

      Some good memories in here.

      1. 1

        RSI for me has always been triggered by over-reliance on the mouse. I try to do as much as I can from the home-row of the keyboard and avoid the mouse as much as possible. I also switch mouse hands whenever I start to notice any RSI like symptoms in one hand. I also try to pay attention to my posture and my hand placement on the keyboard, but for me definitely the mouse has been the major contributing factor to RSI flare-ups.

        1. 2

          Pretty cool. I’m using wakatime right now as it Integrates with my editor and tracks time spent in git repositories. An open-source alternative would be awesome. At $DAYJOB we need to track time to get research credits from the government.

          1. 3

            The first change I would make to pull requests is to move away from forks being a required part of the workflow.

            Amen brother! I find the “fork first” model so annoying. I don’t want to maintain a fork, I just want to clone the main repo and submit a change request. I do like the phabricator approach, and sr.ht seems to have a similar “no fork” required approach with the git send-email approach. I personally don’t care about tracking the individual commits in a PR since I feel like a unified PR should be small and just do one thing.

            1. 2

              My ideal workflow for open-source would be git-clone-commit-push. For unauthorized users the server should create a pull request instead of putting the pushed commits onto the branch. The only fork is my local copy. I don’t know any git-server-tool which works like that.

              1. 2

                I think this is more or less what repo.or.cz does with mob:

                https://repo.or.cz/h/mob.html

            1. 10
              how do you keep $HOME clean

              $HOME is read-only:

              • New applications are not allowed to create directories or files in $HOME.
              • Existing non-compliant applications are gradually replaced by compliant ones.
              naming rules do you follow

              All dirs lowercase for better auto-completion.

              top level directories
              • .cache: XDG cache dir

              • .config: XDG config dir

              • .local: XDG “local” dir

              • apps: unmanaged third-party application binaries

              • audios: subfolders music and casts

              • backup: obvious

              • code: sources for my coding projects

              • desktop: files that are displayed on the dektop

              • documents: obvious

              • downloads: obvious

              • fonts: symlink to .local/share/fonts/

              • images: pictures, screenshots, wallpapers (I wanted to find a different name, because of the possible confusion with CD images, but the time made this concern obsolete)

              • public: shared directory, network-accessible

              • remote: remote mounts

              • videos: obvious

              1. 5

                New applications are not allowed to create directories or files in $HOME.

                easily the best idea that I have read regarding unix administration in a long time

                1. 5

                  New applications are not allowed to create directories or files in $HOME.

                  Do you have a technical way to enforce this, or do you just pay attention to the files and directories an app creates?

                  1. 3

                    Yes, chmod -222 $HOME does the enforcement for me.

                    I wrote a more detailed step-by-step guide here.

                  2. 2

                    New applications are not allowed to create directories or files in $HOME.

                    WOW. Why didn’t I think of that?! Thanks!

                    1. 2

                      I don’t understand. Home is read only, but you write a bunch of stuff there…what am I missing? Can you give me more details please?

                      1. 3

                        $HOME itself is read-only (chmod -222 $HOME), but existing files and folders are still writable.

                        That’s how the amount of garbage .dotfiles is slowly decreasing on my machine: New ones can’t be added (because of the dir being read-only); and I’m removing existing ones as I migrate to better written applications.

                        I wrote a more detailed step-by-step guide here.

                        1. 1

                          Ahhhh! Thank you!

                    1. 1

                      Host my own email and websites. OpenBSD, OpenSMTP, httpd on small vultr vps’s Home fileserver running freenas on an older desktop.

                      1. 2

                        I also do this (save for Home server freenas). Gmail blocks a good deal of my outgoing mail, but honestly, this has been covered a lot recently, so I won’t rant here about is worth it or not. (Yes, it’s worth the risk of having undelivered email, but not having google handle all my email needs.)

                      1. 7

                        Nice! I run OpenSMTPD and Exim on OpenBSD and they are very comfortable on a 500mb ram vps. Welcome to the self-hosted email club!

                        1. 2

                          Company: Lightspeed

                          Company site: https://www.lightspeedhq.com

                          Position(s): Backend Developer, Frontend Developer, Information Security Specialist, Salesforce Developer, Technical Writer

                          Location: Montreal, Ghent, Amsterdam, Toronto

                          Description:

                          Lightspeed is a point of sale SaaS provider. We have products for retail, restaurant, eCommerce, payments, loyalty and recently golf. We use a fair amount of different tech depending on the team you’re on. We have technical debt, but we actively work to combat it. We have developer openings in Montreal, Amsterdam, and Ghent at the moment, but we’re often open to the right candidate even if there isn’t a posting that exactly fits you. We’ve got plenty of challenges and ambitious goals. Our dev managers are former developers, and we do our best to make sure the techincal aspects of the product are prioritized as well as the business aspects.

                          Some of our stack: MySQL, PHP, Java, Go, Python (primarily for test automation), React, Node, GraphQL, REST.

                          We’re on AWS and GCP (migrating to GCP). We use lots of fancy cloud technology: k8s, terraform, helm, docker, etc.

                          Check out our current openings here: https://www.lightspeedhq.com/careers/overview/all/ and feel free to apply online, or reach out to me directly.

                          This is my second time working at LS, I left and then came back, and it’s overall a pretty great place to work.

                          Contact: Feel free to PM me if you have questions

                          1. 5

                            Interviews are usually there to help the interviewer verify that you know how to break larger problems into more understandable chunks. Ask questions.

                            This is the main thing I’m looking for when hiring. I want you to help me get into your head. How do you approach the problem, how do you break it down, what questions do you ask? Ideally, candidates will think out loud when they’re solving a problem.

                            1. 3

                              Speaking of thinking out loud (sorry for the pun), one of the big reasons I hate open office plans is that it hinders people from talking a problem out, even when it’s routine.

                              My old work place had a safety checklist, and we found that even though it was written on paper on a clipboard, we had less mishaps when a worker spoke out loud each of the checks.

                              1. 2

                                I believe you were the one who said the “I’ve read your blog, you don’t need to prove yourself to me” line too. Lol.

                              1. 7

                                While I do agree that it’s redundant to ask to ask, IRC can be an intimidating place, especially if you’ve never used it before. Add to that the fact that you have no idea how receptive people on the channel will be, asking to ask can be useful to guage what kind of response you’re likely to get when you ask your actual question. Based on the response to your original ask, you may decide that you don’t want to ask a question at all because you’ve found yourself in a non-welcoming space. So, while it does annoy me when people ask to ask, I generally try to be as helpful as I can be, considering that the person on the other end of the line may have zero experience talking with developers or even using IRC.

                                1. 3

                                  Throwing a birthday party for my partner. Brunch at 11, afternoon tea at tea time. Going to have 17 adults and 20 kids running around over here. Should be fun, but I’m going to need to take Sunday off.

                                  1. 8

                                    Starting the tomatoes! Trimming another apple tree. Playing with my kids!

                                    1. 2

                                      Company: Lightspeed

                                      Company site: https://www.lightspeedhq.com

                                      Position(s):

                                      Location: Montreal, Amsterdam

                                      Description: We’re a POS company, buildling solutions for SMEs to power their retail, restaurant, e-commerce and loyalty needs. Our main belief is that small and medium sized businesses are what makes cities special, and we want to help them compete with larger enterprises. We’ve got lots of challenges to tackle right now, and there are already a few lobsters working here.

                                      Contact: Feel free to ping me directly, or apply online: https://www.lightspeedhq.com/careers

                                      1. 1

                                        This is really cool. Any plans to design one specificaly catered to programmers?

                                        1. 3

                                          I am not the creator, but I’ve found that MadRabbit has something like rockstar-layout: “In an essence this is a variation on the QGMLWY layout from the carpalx project”. I don’t think it’s ai-powered though.

                                          1. 1

                                            Not OP but I have created a programmer-centric keyboard layout for MacOS that might be interesting to someone.

                                          1. 2

                                            Great to see more resources to help people learn about OpenBSD.

                                            1. 2

                                              Someone on Reddit linked to this section of the FAQ yesterday, I was like…how have I never seen this before? Am I losing my mind? Thanks for putting me at ease. Awesome addition to the FAQ!

                                              1. 1

                                                A few Vultr VPSs running OpenBSD hosting my mail, web, and VPN needs.

                                                1. 3

                                                  Replacing the frame for some outdoor steps that lead to my front door. The existing ones have rusted out.
                                                  Otherwise, probably building some sledding hills in the backyard for the kids, and checking if the pond is frozen enough to skate on.

                                                  1. 18

                                                    I no longer believe that daemons should fork into the background. Most Unix systems now have better service control and it makes the code easier to deal with if it doesn’t call fork(). This makes it easier to test (no longer do you have to provide an option not to fork() or an option to fork()) and less code is always better.

                                                    1. 6

                                                      Not forking also allows logging to be an external concern and the process should just write to stdout and stderr as normal.

                                                      1. 1

                                                        This is not so much about the forking per se, but rather the other behaviour that generally goes with it: closing any file descriptors that might be connected to a controlling terminal.

                                                      2. 4

                                                        OpenBSD’s rc system seems to expect that processes fork. I don’t see an obvious workaround for processes that don’t fork.

                                                        1. 3

                                                          It’s not that hard to write a program to do the daemonization (call umask(), setsid(), chdir(), set up any redirection of stdin, stdout and stderr, then exec() the non-forking daemon.

                                                          1. 2

                                                            It’s even simpler when you have daemon(3): http://man7.org/linux/man-pages/man3/daemon.3.html

                                                            1. 1

                                                              Which you do on OpenBSD, actually.

                                                              Note that daemon(3) is a non-standard extension so it should be avoided for portable code. The implementation is simple enough, though.

                                                          2. 2

                                                            I’m not sure this is accurate, at least on -current. There are several go “deamons” that as far as I understand don’t support fork(2). These can still be managed by OpenBSD’s rc system:

                                                            # cd /etc/rc.d
                                                            # cat grafana                                                                                                                                                                                                  
                                                            #!/bin/ksh
                                                            #
                                                            # $OpenBSD: grafana.rc,v 1.2 2018/01/11 19:27:10 rpe Exp $
                                                            
                                                            daemon="/usr/local/bin/grafana-server"
                                                            daemon_user="_grafana"
                                                            daemon_flags="-homepath /usr/local/share/grafana -config /etc/grafana/config.ini"
                                                            
                                                            . /etc/rc.d/rc.subr
                                                            
                                                            rc_bg=YES
                                                            rc_reload=NO
                                                            
                                                            rc_cmd $1
                                                            

                                                            I’m not sure if there’s more to it that I don’t understand, I don’t write many deamons!

                                                            1. 1

                                                              Well, it turns out, I can’t read! The key to this is rc_bg, see https://man.openbsd.org/rc.subr#ENVIRONMENT

                                                          3. 1

                                                            For those that don’t know, daemontools is a nice service system that explicitly wants programs to not try to daemonize themselves. For services I build and run I try to use that.