Threads for zpeters

  1. 6

    It’s also great for deploying read-only websites. My photo gallery is published as an S3 bucket full of images and a SQLite file; the web server is a Clojure application that has a local copy of the DB. Currently the deployment script works by downloading the DB from S3 and shoving it onto the web server’s file system, but there’s no reason the web server couldn’t just periodically fetch the DB for itself.

    1. 3

      This might be a fun option for replicating your database to the web server. https://litestream.io/

      1. 1

        Possibly, although rsync has served me well enough so far. If I had more traffic, I might be concerned about requests hitting a partially-written SQLite file, but then I could just switch to doing atomic file moves or a blue-green pair of DB files. I haven’t looked into Litestream, but whatever it is, it’s probably more complicated than that.

        1. 1

          It almost isn’t. One could think of litestream as rsync for sqlite formatted files, with the option of doing continuous rsync.

          1. 2

            Mmm. But rsync is everywhere already, which automatically makes it simpler. :-)

            If I needed continuous uptime, the application code to do periodic fetches and swap-outs on the DB would probably take just a couple hours to write.

            1. 3

              I’m not trying to convince you to switch. I’m just saying litestream is probably a good replacement, if you ever find yourself needing to go beyond the lazy of rsync.

              If I needed continuous uptime, the application code to do periodic fetches and swap-outs on the DB would probably take just a couple hours to write.

              If you find yourself thinking of actually doing this; I almost guarantee Litestream would take less time and do it in a more foolproof way.

      2. 2

        That’s a nice setup that I’m going to keep in the back of my mind.

        1. 1

          One other aspect is that when I sync to the server, this is the process:

          1. Upload all new image files
          2. Upload updated DB
          3. Delete all stale image files

          That way there’s very little chance of a dangling reference – even if the process is interrupted in the middle.

          (Images are all content-addressed as well.)

      1. 4

        Spending my paycheck on Record Store Day! https://recordstoreday.com/

        1. 1

          Sleeping. Been working my ass off at a product demo all week, and we’re gonna do it again next week except bigger and more.

          1. 1

            Curious what your product is if you aren’t tired of talking about it by now!

            1. 2

              My company makes drone autonomy software, we’re showing it off installed on a long-range transport drone: https://www.youtube.com/watch?v=Th7A16YVb94

              1. 1

                That is amazing!

          1. 9

            Me and my buddy are hopefully launching our first ever product we’re calling “FundedReport” (though the name may change if that one falls flat on its face). Its been 13 months since we said we would knock it out in 2-3 weekends (mid March last year, hoping for a 2021 April release). Pretty excited :)

            1. 1

              please share a link!

              1. 1

                absolutely :) I’ll swing back Monday after we’re 100%

            1. 23

              Instead, please put the unit in the function name.

              (sleep-seconds 300)

              1. 5

                Too simple. People need to complicate and add yet another bit of complexity such as purpose created types, nammed parameters and whatnot that ultimately needs to be looked up in the documentation.

                Funny that the obvious solution isn’t even mentioned because people don’t even consider a design flaw from their all mighty favorite languages.

                1. 2

                  I hate types

                  1. 5

                    And yet types exist whether they are declared or not, even in Lisp-y languages! Types are a characteristic of the universe we inhabit. I wouldn’t take my car to a hair salon to have the oil changed, and I know not to do this without actually trying it because the types don’t work out.

                    1. 3

                      Right. I’m working on a new essay on this but in short, I tried to design a dynamically typed lisp with maximal applicability of procedures—as in, “reverse” should be able to reverse a string, a vector, or a list, as opposed to having “string-reverse” or “vector-reverse” defined separately. I found that in order to implement that, I needed an isa-hierarchy of types (or, rather, derive an isa-graph from a tag cluster, kinda duck typing style). For example, strings, vectors, and lists are all “sequences”. So, in that sense, types are great.

                      In order to not have to deal with types (as much) on the app level, I really do need to do them carefully (at the primitives level). So types aren’t useless. I still hate them though and languages that make it a point to do everything through types. Dependent types are the worst.

                      I don’t wanna type annotate and I don’t wanna limit procedures to only compile on certain types. I don’t want the compiler to prevent you from taking your car to the hair salon.

                      1. 3

                        APL achieves something very similar to what you are trying to do. Here’s a talk making the point (I think) that APL is so expressive, types would just get in the way.

                        Does APL Need a Type System? by Aaron W Hsu https://www.youtube.com/watch?v=z8MVKianh54

                        NB: I’m in general very type-friendly (as is the speaker it seems), but that just makes this perspective all the more interesting to me.

                        1. 1

                          I love APL ♥

                        2. 3

                          I don’t want the compiler to prevent you from taking your car to the hair salon.

                          But why wouldn’t you want that? The hair salon will do nothing useful with the car, and might even mess it up!

                          What if I call reverse on an integer? I’d love to find out that my mental model is wrong right after I type it (or, at worst, when I run the compiler) rather than when I run the code and get some inscrutable error in another part of my program because reverse silently did nothing with the value (or, even worse, treated the int as a bit string).

                          The fact that some languages have string-reverse and vector-reverse is more a function of the language and less a function of the types. You can easily define a generic reverse function in many languages and still get static types (and, if the language supports it, type inference so you don’t need to write out the types). There are also languages that support things like extension methods so that you can add interfaces to existing types.

                          1. 1

                            Sometimes I feel like this is, figuratively, an ergonomics issue. Some programmers feel more comfy with the kind of checks and balances you’re talking about and others (like me) hate them. I’m kinda glad that there are both kinds of languages.

                            We are veering in to off-topic because the thread is about sleep time units.

                            Let’s say I annotate 10 types. 2 of them find bugs, and then there are three or four bugs that weren’t related to types. Then I have done meaningless work 8 times, and put myself in a workflow or state of mind that make those three or four bugs way harder to find, all for the sake of finding two bugs (the kind of bugs that are often obvious on first run anyway). Instead, if I don’t have types, I check everything at the REPL and make sure it gives sane outputs from inputs.

                            Like, say I wanna make the procedure

                            (define (frobnicate foo)
                              (+ foo (* 6 7)))
                            

                            If I meant to type (* 6 7) but accidentally type (* 6 9), type annotation wouldn’tve caught that. Only testing can.

                            But why wouldn’t you want that? The hair salon will do nothing useful with the car, and might even mess it up!

                            Maybe they can drive around in the car and give haircuts all over town.

                            A lot of my best decisions as a programmer have been me realizing that the same procedure is much more general than I first thought (and then giving it a new, more general name). I like to type as I think, refactor and mold into the perfect parameter signature. (“Oh! I don’t need to pass in the list here, if I only pass the last pair, this function could share code with foo!”)

                            What if I call reverse on an integer?

                            My language converts it to decimal and reverses the digits. Useful for calculating probabilities for Unknown Armies.

                            I’d love to find out that my mental model is wrong right after I type it (or, at worst, when I run the compiler) rather than when I run the code and get some inscrutable error in another part of my program because reverse silently did nothing with the value (or, even worse, treated the int as a bit string).

                            So this is why humanity haven’t found the perfect language yet. Some people like different things. I’m not here to stop the type fest that’s been going on. Cool things might be invented from that camp down the line, it’s good that people are trying different things. If type inference could be made better so we don’t have to annotate…

                            1. 1

                              Let’s say I annotate 10 types. 2 of them find bugs, and then there are three or four bugs that weren’t related to types. Then I have done meaningless work 8 times, and put myself in a workflow or state of mind that make those three or four bugs way harder to find, all for the sake of finding two bugs (the kind of bugs that are often obvious on first run anyway).

                              Can you expand on this more? How do types make it harder to find non-type related bugs? In my experience, by completely eliminating an entire class of bugs (that aren’t always obvious catch-on-the-first run bugs, especially if you have a really nice type system!) it gets easier, not harder, to identify logic errors.

                              1. 3

                                As an analogy, overly relying on spell checkers can make some people miss things that are still legit spellings but are the wrong words in that particular sentence, like effect/affect.

                                But, it’s worse than that since (and I’m complaining about type annotation, not type inference) you need to enter the type info anyway. It’s “bugfinding through redundancy”. Sort of the same philosophy as “write a test for every line of code” but more rigid and limited. Of course reduntantly writing out what you want the function to accept and return is going to catch some bugs.

                                If you like this sort of type checking, you’re not alone. A lot of people love them, and ultimately there’s no need to argue. Time will tell if that style of programming does lead to overall fewer bugs, or at least does so for programmers of a certain taste, and if so, that’s fine by me. I’m not gonna take your ML away.

                                But as my “42 is odd” example shows, I’m not too happy with the whole “statically typed programs are Provably Correct” hype leading into the same hopeless dead end as Russell and Whitehead did a hundred years earlier.

                                Coming from C and Pascal, when I first discovered languages that didn’t have type annotations in the nineties (like awk, perl, and scheme) I felt as if I had found the holy grail of programming. No longer would I have to write out boring and obvious boilerplate. It was a breath of fresh air. Other people obviously feel differently and that’s fine.

                                For me, it seems that a lot (not all, but some) of the things a good type annotation system helps you with are things you don’t even need to do with dynamically typed languages. It also feels like with a type annotated language, there’s a catch-22 problem leading you to have to basically write the function before you write it (maybe with pseudocode or flowcharts) just so you can know what type signatures to use.

                                I felt that wow, a cons pair of car and cdr can express data in so many ways, I can just immediately write the actual logic of my code. Whereas when I worked as a Java dev (don’t worry, I’ve looked at modern type languages too, like Haskell) we had to slog through writing types (classes and instances), UML diagrams, wall full of post-its, architecture, ConnectionKeepingManagerFrobnicator.new() etc. With Scheme it was just, all that red tape just fell away. No need for pseudocode since I could just send whatever I was thinking into the REPL.

                                The type community loves the expression “to reason about the code”. Well, to me it’s a heck of a lot easier to reason about the code when it’s a fifth the size. (Sexps help too since it’s easier for me to grok a code tree than a linear sequence of unparsed tokens of code data.)

                                Obviously, type fans have had similar epiphanies but in the other direction, falling in love with static just like I fell in love with dynamic. And that’s cool. Let the deserts bloom. Humanity can’t be betting all of its eggs on my approach. I see the type craze as an experiment. One that might even be right. So please, go ahead.

                                I’m just really, really grateful that it’s not me who have to slog through it. I can sit under the cork tree sniffing dynamically typed flowers.

                                1. 2

                                  Uh, wait, why did I get baited into writing all that when I see now that I already answered it in what you snipped out:

                                  Instead, if I don’t have types, I check everything at the REPL and make sure it gives sane outputs from inputs.

                                  Like, say I wanna make the procedure

                                  (define (frobnicate foo) (+ foo (* 6 7)))

                                  If I meant to type (* 6 7) but accidentally type (* 6 9), type annotation wouldn’tve caught that. Only testing can.

                                  1. 1

                                    hm, that doesn’t answer my question at all but it your longer post did, so thanks.

                                    I think the point about “boilerplate” is pretty tired and not even true any more with how good type inference is nowadays. Yes, Java involved/involves a lot of typing. No, it’s no longer the state of they art.

                                    It’s true that in the case where you use the wrong term that has the same type as the correct term, the typechecker will not catch this. Not having types is also not going to catch this. I’m going to see the error at the same exact time with both approaches. Having a REPL is orthogonal to having types, so I also often check my Haskell functions at the REPL.

                                    I see the type craze as an experiment.

                                    Calling an entire field of active research a craze is a little upsetting.

                                    1. 1

                                      I am complaining about annotated type systems specifically, which I clarified nine times. Inference type systems are fine.

                                      Not having types is also not going to catch this.

                                      The idea is that checking at the REPL will find it.

                                      I’m going to see the error at the same exact time with both approaches. Having a REPL is orthogonal to having types, so I also often check my Haskell functions at the REPL.

                                      Me too. Which made me feel like the whole type thing was a little unnecessary since I needed to do just as much checking anyway.

                                      (As noted elsewhere in this thread, I’ve changed my tune on types a little bit since I realized I do need an isa-taxonomy for primitives. I.o.w. to get rid of types, I’m gonna have to define types.)

                                      Calling an entire field of active research a craze is a little upsetting.

                                      It’s more the whole dependent type / provably correct thing that’s a li’l bit of a craze, not the entire field of type research as a whole. As I wrote in my essay, types have a lot of benefits including serious performance gains, and that’s awesome. It’s the whole “it fixes bugs!” that gets a li’l cargo culted and overblown sometimes. Not by you, who do understand the limits of type systems, but by hangers-on and newly converted acolytes of typing.

                              2. 1

                                Lots of points from your arguments can be achieved by using generic types, and everything would work safely, giving the programmer quick feedback if the types work for the particular combination. No need to guess and check in the runtime.

                                My language converts it to decimal and reverses the digits. Useful for calculating probabilities for Unknown Armies.

                                So what would be the output of 2.reverse() * 2?

                                1. 2

                                  Four.

                                  1. 1

                                    I’m wondering if that would also be the case with "2".reverse() * 2. Because if the output would be 4, then I’d wonder what would be the output of "*".reverse() * 2 would be. I hope it wouldn’t be **.

                                    No matter what the answers are, I’ve already dedicated a lot of time to decode how some basic operations work. With types, I would have this information immediately, often without needing to dig through the docs.

                                    1. 1

                                      4 and ** respectively.

                                      1. 2

                                        All kidding aside, the idea isn’t to overload and convert but to have a consistent interface (for example, reversing, or walking, or concatenating strings and lists similarly) and code reuse. I’m not insisting on shoehorning sequence operations to work on non-sequence primitives. Which is why I already said I needed an isa taxonomy of primitive types.

                      2. 1

                        So sleep(seconds: 1) needs to be looked up in documentation whereas sleep-seconds(1) does not?

                        1. 2

                          If you language only supports the second, then use the second which is perfectly clear. You would by no means be ina. Situation where lack of language features limit code clarity.

                          Notice that while parameters have names in most languages, in many of them you can’t include the name on your code but rather need to pass them in order.

                      3. 2

                        this way makes the most sense to me, at least for sleep

                        1. 1

                          It used to be a common sense that sleep uses seconds, until other languages not following that.

                          1. 5

                            That’s not how common sense works!

                        1. 6

                          Getting ready for my new position I start on Monday! That mostly means relaxing tbh, but may do a small project in Elixir to refresh my knowledge.

                          Also tomorrow mine and my partner’s parents will meet for the first time

                          1. 1

                            congrats! What is your new position all about? Hopefully, you’ll be writing some Elixir there!

                          1. 6

                            Playing some guitar and getting ready to start a new job on Monday … including tidying my study now I’m fully remote and have been putting it off for too long!

                            1. 3

                              Congrats! I recently started with a full remote gig this year. I has been a transition, but much easier than i was thinking.

                            1. 9

                              Added new riscv64 platform for 64-bit RISC-V systems.

                              Awesome stuff. Just got my hands on a HiFive Unmatched and I’m very excited to tinker with this.

                              1. 1

                                that board looks cool! Just out of curiosity, did you have a project in mind you are working on with it?

                                1. 4

                                  To be honest, I’m not entirely sure yet. There are a number of open source projects trying to target this board (Haiku and OpenBSD, among others), and I’d love to contribute somehow. If not there, I’d like to maybe try writing my own (crappy) OS for fun, since the components on the board are open and fairly well documented. If you have any fun ideas, let me know!

                              1. 2
                                • Running a 10km event at one of the local airfields. Apparently 2021 is the year I take up running voluntarily (previously I “ran” in Triathlons and that was it.)
                                • Racing the supernova at the sailing lake. Haven’t sailed her since May, nor raced since then. Looking forward to it, even with a wet weather forecast.
                                • Continuing my exploration into setting up a spare Mac with Nix, Nix-Darwin and home-manager. Working okay so far, but I’ve not ported much of my configuration to it yet.
                                • Hacking some more on my RPi-controlling-BMW-Z4 project. Hardware in place, needs software writing now. (I should also replace the MASSIVE USB battery with a more permanent solution 🤔)
                                1. 1

                                  I need to know more about the BMW project!

                                  1. 3

                                    I need to write this all up properly somewhere, probably a git repo with Readme-Driven-Development.

                                    • BMW Z4 has kbus network in it for non-critical systems
                                    • https://modbmw.com sell a USB adapter for the kbus
                                    • Already have a RPi Zero W to stick on the USB adapter to have something running either Python or Golang
                                    • https://github.com/ezeakeal/pyBus or https://github.com/qcasey/gokbus for existing libraries to talk to it
                                    • There’s a third party device you can plug in to allow one-press roof up/down functionality, which sounds like it just broadcasts onto the kbus network the same packets as if you were holding the button(s) down constantly. I can replicate that in software, and add other things if I want.
                                    • Also think I can do things like whenever the engine starts, automatically turn sport mode on (as it makes the throttle linear, which then means it drives how I expect it to)
                                    1. 1

                                      Can’t wait to hear how this project goes. If you have a GitHub or anything I can follow let me know. I have a m340, some day I will be brave enough to start hacking!

                                      1. 2

                                        I’ve started https://github.com/caius/z4pi which at least has a readme pulling the above together somewhere concretely. Haven’t really achieved much except “sniff the bus” so far, vanished into a Golang event driven app rabbithole instead. Need to just get something working, I think first simple feature will be “wait for engine start, then ‘push’ the sport button”.

                                1. 9

                                  Absolutely nothing.

                                  I’m a week into putting my unlimited vacation to the test by taking a month off to figure out if I hate my job or am just super burnt out.

                                  I’m hoping that I have enough energy to start playing video games properly soon.

                                  1. 2

                                    Good luck on figuring it out. I know that feeling and it’s not fun. Try to take some time for yourself not job related!

                                    1. 1

                                      Thanks!

                                  1. 2

                                    I haven’t been following Rocket lately? What are the big features/changes that folks are looking forward to?

                                    1. 4

                                      Sounds like the big ones are support for async, and running on the stable compiler.

                                    1. 13

                                      One non-technical aspect of the post I found interesting is the discussion of the difference in introduction styles between the US and Australia. As a non-US person I always feel rather uncomfortable with some US expectations about how we present people (at some point you are asked for a “short bio” and you are supposed to write in the third person that you are an award-winning this or that). I’m not sure I buy the idea that a more forceful introduction would have made a conversation about Sun stealing someone’s copyright much easier, but it’s interesting to see a positive aspect of “boastful” introductions highlighted here.

                                      1. 19

                                        As a US person, I feel uncomfortable with the whole “I have to make myself sound like the most important person in the room” vibe. Updating my resume to add accomplishments is pure horror for me.

                                        1. 4

                                          Thanks! Your experience reminds us that even in the US there are people who are not comfortable with this norm. (Maybe even most people? But it’s the norm so people strive to adapt themselves to the norm.) It’s also interesting to be reminded than other places have a different norm, and that even though many people feel more comfortable with those different norms they also have occasional downsides.

                                          1. 3

                                            The pessimist’s answer is that this advice feels like it’s for people in like, sales positions without morals. You know, sociopaths. (As someone who does talk to people in a sales capacity at times, I try to be honest with who I am and never try to “peacock”.)

                                            1. 2

                                              Or, to take a more useful framing, subcultures generally require less boasting when skills are easy to examine. Engineers can quickly assess each other’s skill levels (or, at least, they believe they can), so it makes sense for engineers to let their own abilities speak for them. What makes someone successful in sales and marketing is far more ineffable and not easily demonstrated at will. The culture therefore depends on people presenting their credentials directly in order for the group to negotiate consensus on who actually knows their stuff.

                                              1. 4

                                                Engineers can quickly assess each other’s skill levels (or, at least, they believe they can)

                                                Do they though? I seem to see at least a popular post every week about how software engineering interviewing is broken and then most people agree this is a hard problem. And this isn’t even getting into sourcing and evaluating quickly if a profile is even worth interviewing.

                                                1. 2

                                                  Yes, thus my parenthetical.

                                        2. 4

                                          Writing about myself in the third person is torturous. For some reason it feels really dishonest to bring up your own skills and accomplishments, even when it is the truth. If you didn’t have impostor syndrome before, you will now!

                                          1. 2

                                            What I think at such a time is: “What even are the skills and accomplishments that I could mention that aren’t just boring run-of-the mill things many people mention? I mean, I’ve done some things I thought were nice and that not everyone could do, but I also think many people can do, or have done, similar things. Judging otherwise would require knowing otherwise and I just don’t. I may believe I’m in the top few % of software developers, but that’s still a huge number of people and I don’t believe I’m extraordinary at anything to mention it.”

                                            1. 2

                                              If you’ve done something genuinely useful it doesn’t matter if other people have done similar things. You’re not looking to show that you’re better than them, you’re looking to show that you’re among them, that you’ve made some contribution. And… “there are many like it, but this one is mine.”

                                              Some of the things I could mention include having a patch in a certain well-known open-source project, being a guest on a particular podcast, or being a technical reviewer for a book. None of those are earth-shattering, they’re all things that lots of people have done before me, but by mentioning them, I show that I’m engaged, and by saying which project, which book, which podcast, I tell people something about me and where my interests lie. Pretty simple, really.

                                              And if you don’t have anything you want to highlight, you can just go with “Confusion has been writing software since $YEAR and currently works on $THING for $EMPLOYER” and leave it at that.

                                          2. 2

                                            I think of this more as a difference between business/sales culture and engineering culture. Business/sales is about hyping yourself up front, and engineering is about setting realistic low expectations and showing your skills through example. I think this is even true (especially true?) here in the US. I know I take it as a very strong warning sign if anyone touts their own accomplishments before I really know them.

                                          1. 6

                                            Just started a new Etsy shop for my leather working. Working on a few projects this weekend!

                                            https://www.etsy.com/shop/rescueleathergoods/

                                            1. 11

                                              I am going to be doing a talk about systemd at AlpineConf. Tune in at noon EDT to rustle all the jimmies into orbit!

                                              1. 4

                                                Ooh, the lion’s den. Wear asbestos undergarments.

                                                1. 1

                                                  I’m just sad I forgot to order popcorn from the grocery store.

                                                2. 1

                                                  Do you know if there will be recordings of the talks? I’d love to check this out

                                                  1. 2

                                                    I know that my talk at least is already recorded and I’m going to push the slides and notes live as soon as the talk starts. I think the other talks are prerecorded as well. I’d suggest asking in #alpine-conf on Freenode for exact details though.

                                                  2. 1

                                                    Interesting. The majority of use cases of alpine I have seen was as a base for docker containers due to its size. Since you can’t run systemd inside a container, this does not matter much for that crowd. Do you see many people running alpine as the main OS on their servers?

                                                    I ran an alpine/arm tor node for a while, but that was not the most stable machin I ever had. I may have been the hardware though.

                                                    1. 2

                                                      I run Alpine as the main OS for my servers – The package management is blazing-fast, the init system is out of my way (I stick to the happy path, but I’m sure it’s flexible.), and I keep the system minimal.

                                                      When I need to run something that requires a heavier environment, I can stick it in a Docker container, and give it an image that’s based on another distro.

                                                      1. 2

                                                        I used to run Alpine as the main OS on my servers for many years. I even did a few production deployments with it. Docker certainly made Alpine a lot more popular overnight for bandwidth reasons though!

                                                    1. 10

                                                      Celebrating my anniversary and studying for my Amateur Radio Technician license!

                                                      1. 2

                                                        Congrats and welcome!! Are you doing technician or general?

                                                        1. 1

                                                          I’m going for technician, but I’m debating doing the general element as well. Having access to HF would be a lot of fun!

                                                          1. 2

                                                            yeah! I took general for the HF access. I studied a few days for the Technician but the morning of the exam I read the no-nonsense guide for general and took both exams and passed them both :-)

                                                            TBH I really didn’t learned everything that I should have for the General but I see it as a license to learn! So no I can learn by doing, even in HF :-)

                                                            In any case, good luck and 73!!

                                                            https://www.kb6nu.com/product/no-nonsense-general-class-license-study-guide-for-tests-given-between-july-2019-and-june-2023-pdf-version/

                                                            1. 1

                                                              Very nice!! You’ve convinced me to do both, thank you very much for the link!

                                                              Did you take the written or virtual exam?

                                                              1. 2

                                                                virtual exam, it was pretty straight forward and not that stressful!

                                                        2. 2

                                                          Good luck on your Ticket

                                                        1. 3

                                                          I use https://joplinapp.org/ synced to my Nextcloud instance (WebDAV). Joplin is super awesome, it is quick, search is great, writing and editing notes in Markdown is natural for me. I’ve used Notion in the past and found that it’s slow, the different components/block system actually gets in my way of composing notes. And then, Joplin allows me to take a backup of my data seamlessly.

                                                          With the tool out of the sight, it’s really important to figure out a workflow as well for yourself. There’s no point in finding a good tool and not using it enough (or just forgetting about it in the next few days). Here are few ways I use Joplin:

                                                          For Knowledge Management:

                                                          • Have 2 Notebooks: Work/Personal. (self explanatory)
                                                          • Inside Work, I have multiple sub-notebooks which touch broadly each category of the stuff I do (eg Golang/Ops)
                                                          • I’ve a Scratchpad sub notebook in both Work/Personal and this is actually where I spend most of my time on. During the day or while doing the task, I make it a point to just log down whatever I did to not forget it later (if I think it’s worth saving for future) and not particularly care much about grammar, formatting etc. The idea is to log down as soon and go back to what you were doing. Depending on the workload during the week, I take the Scratchpad and move the entries to their correct categories and format them nicely. This usually happens twice a week (Wed and Sat) but no fixed rule. The idea is inspired from “Inbox Zero”, so at the end of every week I aim to have a clean scratchpad and whatever I’ve learnt during the week goes in correct categories.

                                                          For Bookmarks: One Notebook with multiple sub notebooks with categories like:

                                                          • Articles
                                                          • UI Inspiration
                                                          • Tech Talks
                                                          • etc..

                                                          I use Joplin Web Clipper Extension which allows me to save the entire link (as HTML or just URLs) in these notebooks. Each new entry is a new note, that allows me to also take short notes on that particular URL later (like few notes after watching a tech talk) etc.

                                                          I heavily use Tags in all my notebooks, which allows me to have a unified view of different kind of stuff I’ve. For example “golang” tag in my Work notes and Personal notes, allows me see all the “golang” stuff together in one place.

                                                          This system isn’t ideal/perfect or it may not suit you as well. And I didn’t reach at this workflow from day 1, took me many iterations and experimenting with different tools until I settled on this. And now I think I’m fairly satisfied with this approach. Joplin is <3

                                                          1. 3

                                                            Just came here to praise Joplin!

                                                            1. 2

                                                              +1 for Joplin. It has honestly been a Warp Speed productivity boost for my learning and retention.

                                                              Realized I should at least try and add some value :)

                                                              I make heavy use of both notebooks and tags. So I have Tech, Househoud, Gaming notebooks, and about a bazillion tags for every possible attribute, but I can at least restrict my search to the correct sphere, which is especially useful if I know I want a particular thing but can’t successfully retrieve it using a tag search.

                                                            1. 2

                                                              Running most of my stuff on a self-hosted kubernetes cluster.

                                                              Also a small project called “Monkey Radio Reborn”. Me and my sister have been scrounging around for the playlists from the old Monkey Radio music stream (https://web.archive.org/web/20080705112816/http://monkeyradio.org/). I think we have about 50% of the collection at this point

                                                              https://monkeyradioreborn.com/

                                                              1. 1

                                                                Nice one. I have been surviving with Soma.fm: Groove Salad, and, latterly, https://open.spotify.com/playlist/1plJAm2h7qXQtxkSl82DDz

                                                              1. 6

                                                                Just seeing a code snippet up front speaks volumes. I wish more programming language websites would do this! Great job on the redesign!

                                                                1. 10

                                                                  I’m putting in my 2 weeks notice today so I can go off and do my own thing! So I would guess this week will be kicking off the wrap up process, answering questions, and documenting things.

                                                                  1. 3

                                                                    Good luck. Whats the next for you?

                                                                    1. 5

                                                                      I’m building a tool to help observe and understand event based systems. I’ve needed it at every single job I’ve ever had and have been frustrated that tooling to scale event pipelines and event data gets so much attention but no one puts effort into tooling to understand the data. I’ve put alot of thought into it over the last few years and think I can hide most of the mechanics to just give direct insight. Ideally it should be clear enough that you don’t have to be technical at all to view the data and understand what’s happening.

                                                                      There wasn’t a way for me to build it when working at a company because event systems were how things were implemented, but the business problem we were solving was totally separate so I could never get time to dedicate to attacking the problem. I’m now taking the time to try to actually solve it.

                                                                  1. 3

                                                                    Did you figure out the “music mode” yet? I’m still totally stumped at what one would use this for.

                                                                    1. 1

                                                                      It disables keypresses but makes the speaker play audio. It’s a neat gimmick.