Threads for rickcarlino

    1. 2

      If you like reader mode, be sure to check out Gemini protocol. It’s like a version of the web that only allows reader mode. Less feature rich, but easier on the eyes.

      1. 3

        I tried to build an offline-only peer-to-peer protocol but realized it will take more work/collaboration than I had available. Might come back later.

        I will get back to it at some point. I learned a lot in the process and I still view the project as a worthy endeavor.

        1. 2

          This looks really neat. I’ll have to look into it more later.

          1. 2

            Glad you like it! Feel free to raise an issue or contact me privately if you have questions.

            1. 1

              Alright, I’m coming back to this finally. What’s the current status on the project? It sounds like the thing I have been dreaming of for a long time, especially the differences from SSB.

              Also: how do you do serialization? Do you have some kind of vector clock thing?

              1. 1

                Greetings! Thanks for looking into the project deeper.

                To answer your questions:

                • What’s the current status: I will say “hibernation”. I’m basically waiting for two things: A cleaner schedule on my end, and an increase in outside interest. If you want to dig deeper into the codebase, feel free to email me. My email is publicly available on Github. If not, PM me for it on Reddit (same user name as on Lobste.rs).
                • How do I do serialization: I unapologetically re-invented the wheel for this. The serialization format is a custom solution. I don’t know how deep you dived into SSB, but if you have ever tried to sign a message by hand, you will understand why JSON was not appropriate for the job. I needed a serialization format that was human-readable but which also did not leave room for interpretation or ambiguous whitespace (quite a big deal when you need to sign things and verify signatures).
                • Vector clocks: I copied SSB’s way of doing it. Every user in Pigeon keeps their own personal clock. Each message increments the feed’s depth by 1. This prevents hash collisions, also.

                It’s been a while since I’ve touched the project but please do keep in touch if you are as interested in it as I am.

                One final thing I will say: I did a lot of experiments to get the project to where it is. In doing so, I learned a lot and uncovered a lot of flawed thinking. If you decide to help on Pigeon or decide to spin off your own project, I’d be happy to share these lessons learned.

        1. 2

          Building fun, not-serious stuff with RetroForth. Catching up on my reading. Have a good weekend, Lobsters!

          1. 2

            Anecdotally, it seems that building “useless stuff” is actually pretty popular among programmers, but it hasn’t received formal acknowledgment from the developer community.

            I wish there were more communities and publications that focused on “useless software stuff” as a theme. It’s fun to build useless stuff, and it’s fun to see the useless stuff other people build.

            You can find a lot of out of print magazines from the early 80’s (such as BYTE magazine) that had a heavy focus on software hobbyists. You can also find some decent publications for hyper-specific niches, like the demoscene and retrocomputing. I haven’t seen too much outside of that, though. I think the closest thing out there today would be the Tildeverse, which has a strong focus on software for fun.

            Has anyone found any online communities or publications that follow the theme of “useless software stuff”?

            1. 1

              Does this link work?

              1. 2

                For everyone wondering, lobsters has a cached link which takes you to archive.md. There you can either see archived pages or archive the page. In this case, archiving it shows me that it is, at least from their connection, reachable. ( https://archive.md/NTgBf )

                1. 1

                  Seems to be up here in Chicago. Did you get a 404, or was it a domain issue?

                  1. 1

                    The link target I have in the browser is “https://rickcarlino.com/2021/01/23/build-a-raspbery-pi-linux-system-the-hard-way-html.html” (note the double html both in the name and extension)

                    When hitting the hosting server, looks like it translates over to “https://rickcarlino.com/2021/01/23/build-a-raspbery-pi-linux-system-the-hard-way-html.html” (which roughly looks like it should)

                    Then I get a wait and a “The connection has timed out” message

                    DNS resolution works. traceroute gives me three hops and then it dies, which means my ISP must be eating it for some reason.

                    I’ll try again from another ISP. I just was wondering if anybody else was experiencing problems and if the double html was what was intentioned.

                    1. 1

                      The double HTML part is unfortunately a mistake on my part when configuring my static site generator (never got around to fixing it). The article generated quite a bit of traffic, so perhaps the server was overloaded at the time, leading to a timeout?

                      Please do let me know if you find a root cause- would be useful to know for future articles, and thanks for the heads up!

                1. 2

                  Going to play around with RetroForth and maybe fix up some old retro machines.

                  1. 5

                    I used to use <input type="image"> to display fancy submit buttons, not realizing they did anything else. Then one day I noticed an x=12&y=34 thing on the submission… and then i realized what that meant - it was a form submit of the click coordinates! The form-based equivalent to the link-based ismap discussed in the link.

                    I rarely see this mentioned even on sites trying to describe the image type specifically. It is a cute little feature, though of course, like the link says it isn’t ideal for most of… anything.

                    1. 1

                      That’s really neat! I did not know about that.

                      I could have used that to allow a color selector in that canvas demo app.

                    1. 4

                      Retro is not a standard Forth, but I feel that it is the best starting point for anyone who wants to get started with Forth. It is simpler for modern programmers to grasp than older more traditional Forths. It is incredibly well documented also.

                      1. 4

                        cc @banana_oatmeal

                        Could you describe some ways that Retro differs from other Forths?

                        1. 6

                          Not in any particular order, and certainly not complete, but:

                          • portability: Retro runs on a tiny, easy to implement virtual machine, which allows any non-host dependent code to work across systems. As such, it runs on bare x86 hardware, or under an
                          • uses a somewhat literate source format with code blocks, test blocks, and commentary, typically written in a Markdown subset
                          • the language uses prefixes/sigils to denote actions for tokens (similar to colors in colorforth)
                          • word behaviour at compile/interpret time grouped into classes (an idea borrowed from helforth)
                          • more packaged data structures (arrays, strings, etc) in the core language
                          • flat namespace, using short prefixes to group related words
                          • extensive use of quotations and combinators
                          • no forward parsing of input stream
                          • it’s used daily for a variety of real-world, non-embedded, tasks (I use Retro to implement significant parts of a browser-based application my employer uses for order management, in addition to running tools written in it for many of my own purposes)
                          • documentation: I find most Forths to be lacking on this front, so I try to provide useful documentation, and work to continually improve on it based on feedback I receive.
                          1. 2

                            You should consider applying for a hat

                          2. 3

                            The big differences are:

                            • There are no only a few “immediate” words, a concept which can be confusing to newcomers
                            • There are no “parsing words”, words that operate on the entire buffer of text input. You can do some cool stuff with parsing words, but I always felt like it was too much power and made it hard to read other people’s code.
                            • Forth and Retro are both untyped (not to be confused with dynamically typed), which is a big change for most newcomers. In Retro, you get more syntax than a normal Forth for dealing with different types of data. In regular Forth, everything is either a number or a dictionary entry. Retro adds “word classes” so that numbers start with #, strings start with ', chars start with $, etc…
                            • Retro does not have the historic baggage that Forth might have, since Forth was invented in 1969. A lot of Forth systems will still make reference to things like “blocks”. Although a lot of devs like working with blocks, I feel like they are just a remnant of the past, given that few people work on machines that have decent filesystem support in 2021.
                            • Retro also uses quotations in a way that is different than traditional Forths, though I do believe quotations were added to Forth in the last 10 years.

                            I write more Retro than Forth. No hard feelings if someone reading this wants to fact check me.

                            1. 6

                              A minor correction: there are immediate words, but very few.

                              In the core language:

                              hook } { ) ( again repeat ] [ ; 0; pop push
                              

                              And I flag the prefix handlers as immediate as well.

                              1. 2

                                Thanks for the fact-check, Charles!

                              2. 3

                                Thank you!

                          1. 3

                            If you like VB inspired programming environments, Gambas BASIC is a similar Linux-only project that uses a specialized BASIC dialect.

                            1. 2

                              If you use a serial terminal a lot for work/play, I highly recommend giving this one a try. Unlike the alternatives, it was written recently, so it doesn’t have much legacy baggage. It just “feels right”.

                              1. 2

                                When I read this article, I immediately think of Forth. In Forth, you can have multiple “tasks” (somewhat similar to threads or fibers in modern languages). One of these tasks is the operator task, an interactive interpreter/compiler. It is possible to change how numbers are parsed and formatted, and many other aspects of how the language behaves. Just about everything is done through this interface.

                                Interactive development has been a part of the language since day one (~1969) and can be supported on even the tiniest of targets. There are no external libraries or toolchains that need to be added- it has always been there, and numerous assumptions have been baked into the language. Non-interactive Forth systems are the exception rather than the norm.

                                Unfortunately, I don’t have much experience in Lisp, so I am not able to compare it to Forth. I would be interested in hearing from someone who has experience with both languages to see how they compare.

                                1. 4

                                  I’m pretty religious about my yearly goals and New Year’s resolutions for about 4 years running now.

                                  This is my list:

                                  • Todoist. the “recurring tasks” feature is good for goal chasing.
                                  • The “Daylio” recurring journal app, which I wrote about here.
                                  • a “mastermind group” of humans, described below. I use the term differently than some mastermind group adherents.

                                  The most effective tool I use is that last one- it’s very low tech. I formed a group of humans that also have yearly goals. I found them by asking on a Slack channel at my local maker space.

                                  We meet for 45 minutes every Wednesday. We decide a start date and end date for the meetings, decide when we will stop meeting or swap out members, etc.. I’ve found that you can’t form a group with more than 4 people, and a group of three is optimal.

                                  In the first meeting, we introduce our goals to know what we are trying to do.

                                  In subsequent meetings, we follow a straightforward agenda. A proctor is chosen to lead each meeting. The only software we use is a video conferencing app and a Google Doc for tracking meeting notes. We go in a circle asking the following questions:

                                  • What did you do last week?
                                  • What will you do next week?
                                  • Do you have any stretch goals or “hand-wavy” goals that you want to talk about?
                                  • Where are you struggling / what’s on your mind?

                                  Member responses are tracked in a Google Doc to make it easier to remember where we left off at the end of the week. I recommend deleting notes that are more than two weeks old. It creates much clutter with a group of 3-4 people.

                                  As participants, we try to help each other by:

                                  • Keeping members on track and accountable to their goals.
                                  • Help members figure out why they are/are not meeting their goals.

                                  Having a group of people to support me and keep me accountable has been critical. When we disbanded the group, we all noticed that we began to slip on our goals and unanimously decided to re-form the group. It’s been the most effective tool for me so far.

                                  1. 5

                                    If you want to dive deeper on the subject of stack-based computation, a good free resource is Philip Koopman’s Stack Computers: The New Wave.

                                    The whole thing is available online for free. Although it is dated, it has some good information still.

                                    1. 3

                                      Thanks for the suggestion! I’ll take a look.

                                      I’ve also been looking at Nisan and Schocken’s The Elements of Computing Systems.

                                      1. 2

                                        Incredible book, highly recommended

                                        1. 1

                                          I think you should post the link to the book as a submission by itself.

                                          1. 2

                                            OK, I will. Thanks for the suggestion.

                                            EDIT: It looks like it was posted 5 months ago. It seems that we crustaceans have an insatiable appetite for stack machines.

                                            1. 1

                                              Are you referring to the Koopman text or The Elements of Computing Systems here?

                                              1. 1

                                                The New Wave book that is free online. I’d do it (I have even bought the Kindle version) but since @rickcarlino mentioned it, I wouldn’t want to “steal” any upvotes.

                                                I also own the Nisan book, but I’ve never found time to seriously go through it.

                                                1. 1

                                                  Thanks for the clarification! Probably better to have it posted by someone who’s read it – can’t say I’ve gotten there yet ;)

                                                  FYI, looks like the Koopman text has an existing story submission here (albeit from 2 years ago): https://lobste.rs/s/sxassm/stack_computers_new_wave_survey

                                          1. 2

                                            I’ve used Kiwix in the past to keep an offline copy of StackOverflow and Wikipedia.

                                            I do agree that offline time is useful for tasks related to productivity, though I find it makes research tasks more difficult.

                                            1. 0

                                              This is why I like lobste.rs more than other tech news sites. Great work!

                                              1. 1

                                                more than other tech news sites.

                                                🤔 - the submitter wasn’t the author, and the same post was seen on every other link aggregator of tech related posts… Help me understand why this is the example that sets Lobsters apart?

                                                1. 3

                                                  I guess because you get to see the good stuff, without the most of the chaff on the other aggregators.

                                                  1. 1

                                                    I didn’t realize that the submitter was not the author- whoops! I still appreciate that the submitter found it, and I appreciate that the author took the time to share a very fun looking project with the rest of the world.

                                                    Here’s my short love letter to Lobste.rs:

                                                    Using technology for its own sake or for self expression or to scratch one’s own itch rather than for more “serious” purposes is one of the key distinctions to a lot of the articles on Lobste.rs. It’s nice to see people using software for fun. I feel that a lot of the “fun” content out there is overshadowed by some of the more serious stuff such as tech business happenings, the politics / tech intersection, industry news, career trends, etc.. Anecdotally, I’ve seen more hobby content in decades past, such as BYTE magazine, 2600 and similar publications but the trend appears to have died down by the mid 2000s. On Lobste.rs though, it seems that such content is alive and well as the upvote count makes evident.

                                                1. 6

                                                  We used the Raspberry Pi as the onboard computer for the FarmBot project (open source gardening robot).

                                                  1. 2
                                                    • Firefox
                                                    • Todoist
                                                    • jrnl.sh
                                                    • Slack / IRC
                                                    • Fish shell
                                                    • VSCode
                                                    1. 2

                                                      jrnl.sh is awesome. It helped me organize my life.

                                                    1. 17

                                                      Excellent doggo detection. 8/10 would listen to bark.

                                                      As the ESP32 can do voice/wakeword detection I was kind of hoping this would be some kind of wake word detection rejigged to detect barks. But still an impressive detector (and much simpler!) :)

                                                      (Full disclosure: I work on ESP32 software at Espressif.)

                                                      1. 4

                                                        Wow I had no idea. Thanks for letting me know about that. Perhaps there is a need for Woof Alert v2 :-P