1. 26

The last thread was 25 days ago, so I figured it’s time for a new thread! The last thread description was written by zge, and I’m too lazy to rewrite it; anything after this paragraph is a copypasta from last thread.

A little while ago, there was a discussion to start a series of threads on what the members of this site a writing (like blog posts, essays, etc.).

The idea was to share drafts and get some feedback, especially if you’re a younger writer, don’t have peers that can help you or would like some input on the topic you’re writing – maybe someone can give you a few pointers?

  1. 8

    I’m not writing yet, but I was thinking about writing something longer on the question of whether or not computers can still be considered “liberating”, or if they have practically become means of control. Mozilla’s recent layoffs motivated me to re-think this subject again.

    I was thinking about looking into parts of Ted Nelsons Computer Lib and other writers from that strand, early texts on software freedom, as well as early commentary on the internet (Hackers Manifesto. I remember there being something on that topic in Curtis’ HyperNormalisation, so that might be worth re-watching.

    Does anyone have any other material, pro or contra that’s worth engaging with? I’m leaning towards answering my question with a “No”, but I wouldn’t want the conclusion to seem too easy.


    Meta: I think the thread title should be changed to something along the lines of “What are you currently writing”, to avoid that the thread misses it point. It shouldn’t be a “Share your blog”/self-promotion kind of thread, or just saying what you are writing, without any reference, and the title should make that clear.

    1. 2

      You may want to try out Ursula Franklin’s book “Real World of Technology” which discusses prescriptive tech and control. Changed how I think about technology generally, not just computers.

      There’s a summary of her views on the topic at https://fampeople.com/cat-ursula-franklin_3

      1. 1

        Looks interesting, thanks!

      2. 1

        It’s a fascinating topic. I wrote a post about this a few years ago, in the context of the rise of cloud services and decline in importance of F/OSS desktop software: Cloud GNU: where are you?

        “HyperNormalisation” is a very thought-provoking film. You should also note that he really expanded on the “techno-utopia” strain of history of the early web (which, if I recall, was only briefly covered in “HyperNormalisation”) in his earlier TV series, “All Watched Over by Machines of Loving Grace”.

        1. 1

          Fair point, I wasn’t sure what level of detail was expected. So this thread is about “what specifically are you writing right now”?

          1. 3

            It’s about getting help/helping others write, or that was at least the idea. Perhaps a template for top-level comments could help?

        2. 7

          I want to write an essay about how not everything deserves to be profitable. Not every idea should be monetized. This doesn’t mean that not every idea deserves to exist (though maybe that’s also true), but more that there are some things in this world that are better off done as public goods.

          I constantly see examples of failed business ventures where people were building something legitimately cool and something I want to exist, but just not something I want to pay for (or want any person to need to pay for). In some cases, it offends me that some businesses are wildly profitable which I feel should not be (meditation apps is one such example that I am trying to work through).

          I do a lot of open source work, and for a while I was bitter that millions of people used my work but I was not making any money from it. I did various things to try and monetize the work, but there were some things I simply refused to do: Violate my users’ trust or change the license into a non-OSS commercial hybrid license. I see some projects trying this and the results always seem very disappointing. It feels especially egregious when a project grew for years in thanks to its permissive license and community contributions, then later tries to take advantage of that good will.

          Years later, I’m starting to realize that the world benefited a lot more from the projects existing under a permissive OSS license than I would have benefited if I tried to monetize it more aggressively. I also got some indirect benefits from it too, like social proof on my resume.

          This is different from finding ways to get paid while working on open source software. I fully encourage employers to subsidize such work, especially if they benefit and profit from it indirectly. I also wish that government grants for this kind of work were more common.

          I’d like to come up with a big list of examples of things that should not be profitable (or even revenue-generating in a private way), suggestions welcome:

          • Popular open source projects (is there a clearer line to draw here?)
          • Healthcare (feels like an obvious one in 2020)
          • Any other favourite examples?
          1. 3

            Good book on the topic you may be interested in: “What Money Can’t Buy: The Moral Limits of Markets”

            1. 1

              Oh that’s great, thanks for the recommendation! Queued it up.

            2. 1

              Regarding open source projects, I agree with this statement in spirit. The problem is that in the real world, monetizing it is the only way to get a chance to get paid while working on it. I don’t know what a solution is, as long as most employers are refusing to subsidize any of it, and even large industrial users often aren’t supporting projects they rely upon.

              I believe a lot of time monetizing a project without compromising the freedom is best you can do, until the world changes.

              1. 1

                For what it’s worth, my experience has been the opposite. Every company uses a ton of open source software these days, so there are always opportunities to upstream things while being very well compensated if that’s your goal. I’ve never heard of an employer outright disallow this, and I generally only work with companies that are actively supportive of it. It’s also not uncommon for maintainers to be hired and work on the project continues to be part of their job (e.g. Guido worked on Python while at Google and Dropbox).

                Perhaps they don’t support the projects in the way the maintainers would prefer (by just throwing them money) but rather by sharing their own efforts because it’s less work to upstream than to maintain a fork.

                I do wish companies would give more money to maintainers but I’m not sure how realistic that is at scale.

                1. 2

                  I’ve never heard of an employer outright disallow this, and I generally only work with companies that are actively supportive of it.

                  There aren’t many companies that make any modifications to the projects they are using. There’s also a whole category of projects that are programs rather than libraries, and their users are often non-programmers and can’t help with development.

                  Overall, I’m happy that more companies than zero now compensate their employees for working on open source, outside of the companies built around open source projects. But they are still a minority.

                  Guido worked on Python while at Google and Dropbox

                  I don’t have statistics, but from my observations, Guido is an outlier. Do you personally know people employed by large users of their project to work on the project? I don’t. I personally know other people who turned their project into their source of income by starting a company though.

                  1. 1

                    Do you personally know people employed by large users of their project to work on the project? I don’t.

                    I was. :)

                    And yes, I also know many people who started companies, but I think we mean different things when we talk about “monetizing a project”. Perhaps we need separate terms for the distinction of making a tool and starting a business that uses the tool, vs changing the tool so users have to pay to use it.

            3. 4

              I am writing my master thesis at the moment. Submission date is in less than two weeks so this is my main focus for now. The topic deals with dimensionality reduction (read: visualization) algorithms, to be specific with neighborhood embeddings. While conducting research the focus was on a comparison between t-SNE, UMAP, and ForceAtlas2 (and to a lesser extent Laplacian Eigenmaps). In general those techniques are used for transcriptomic data quite a lot but there is hardly any intuition or theoretical underpinning behind it. So the extent of my work was doing a comparative study from an analytical standpoint as well as empirical with plenty of ablation experiments.

              Now it’s mostly writing it all down – with a special focus on the mathematics behind it –, finding (even more) references, and making some additional illustrative figures.

              1. 5

                I am writing regularly on a blog aimed at helping new developers: https://letterstoanewdeveloper.com/

                I write/edit for the FusionAuth blog: https://fusionauth.io/blog/ and elsewhere on that site. (By the way, we’re looking for guest bloggers, contact me for more info.)

                I write less regularly at my personal blog: http://www.mooreds.com/wordpress/ but am proud that it turns 16 this year.

                1. 1

                  Re: WordPress vs SSGs from your blog, I just caught up with a programmer friend and we spent an hour discussing the state of the “market” for open source CMS options. He had recently re-done a site in Jekyll and we were marveling at how much Jekyll is a “Just Works” technology – an unfussy, usable, and fast SSG. I was comparing that to a static site generator I had built atop Flask in Python, which I wrote about earlier on this site. And then I was sharing what I learned ever since my team migrated away from that “home grown” SSG, very much inspired by Jekyll, and to GatsbyJS, which is a much more complex project. It makes the developer experience better for frontend-oriented developers/designers, but is also just so bizarrely complex at build-time.

                  We were also lamenting the degree to which the market of open source WordPress alternatives is pretty gnarly and poor: that is, things like NetlifyCMS, Sanity Studio, Strapi, Ghost. And how much “total system” complexity is generated from wanting to use a static site generator together with services like Forestry, Forestry Instant Previews, Netlify Build, Netlify Large Media, Gatsby Preview, and the like.

                  1. 2

                    Great comments. I’m using Jekyll at $JOB and finding it quite enjoyable. It actually has echoes of rails for me. Lots of additional functionality able to be snapped right in. Seems like some of the community has moved on to things like Gatsby, but there’s a lot that just works.

                    Totally agree that wordpress uses up most of the air in the room when it comes to the CMS experience. Even Drupal has been hurt by that, and I’m not sure what chance an open source CMS has. Probably similar to a open source office suite–MS Office is “good enough” and “known enough”, just like Wordpress.

                2. 3

                  Inane comments on lobsters.

                  I have plenty of ideas otherwise.

                  1. 3

                    I’m writing letters and a daily journal to my three year old son. He won’t get to read any of it any time soon. But it will be there waiting for him at some point. I though that I should write down everything I want to tell him at different times in his life, just in case, you know, something happens and I’m not able too when those times come around.

                    1. 3

                      I’m writing a long form for an Italian magazine about the birth of the Tech Workers movement, its different souls and how it’s gaining traction. I guess it doesn’t make sense for English speakers, since the material on this topic is already abundant. If anyone can speak Italian, I can share my draft once it’s finished.

                      1. 2

                        Volentieri!!

                        Just for curiosity, is it the general direction of forming unions / professional orders?

                        1. 2

                          Unions yes, professional orders not really.

                      2. 3

                        pytype developer documentation - we’re hoping to make it easier for new people to come in and contribute.

                        1. 2

                          pytype is awesome! I hope to see it gain more traction, it feels more pythonic than mypy to me.

                          1. 2

                            thanks :) we’ve also been tagging issues “good first issue” if you ever would like to poke at the code!

                        2. 3

                          Thanks for this thread!

                          I’ve stated working on a Russian translation of my compiler series. It’s going quite slowly, particularly because I’m probably at about 10 WPM in Russian, and my English articles take a long time even at 120+WPM. I’m also not particularly skilled in Russian, so I’m dreading publishing the content since I don’t know of anyone who can proofread it.

                          Concurrently, I’m working on an article about “how many values a boolean has”, inspired by an interview question my friend was asked. The draft is here. It’s in English for now, so at least I’m making decent progress.

                          1. 4

                            The obvious answer to your latter blog post is nine! For hardware description languages like VHDL or Verilog, there exist multiple values, as they have to take account for the actual current. IEEE1164 gives a small overview if you’re curious: https://en.wikipedia.org/wiki/IEEE_1164

                            1. 3

                              Wow, thank you! I have been taught some SystemVerilog and CMOS stuff, and recall having “high”, “low”, and “somewhere in-between” (forgive me if that sounds silly - I’m no electrical engineer!). However, I certainly did not know about all of these options. Thanks again for sharing!

                              1. 2

                                Yes, I was in the same situation, and I remember being irritated when this table was shown to us. Happy to help :)

                            2. 1

                              Hi Danila, I am in a similar situation to you with regards to wpm in Russian.

                              I highly recommend you look into “translit” keyboard layouts, in particular the one designed by Apple.

                              On macOS, it’s known as Russian (Phonetic).

                              For Windows, a kind person has created an adaptation: https://medium.com/@yurinnick/battle-around-russian-phonetic-keyboard-in-windows-10-c9cfbe3be707

                              For other platforms, probably have to hack it yourself.

                              Я не могу сказать что печатаю так-же быстро как по-английски, но по крайней мере я знаю где все клавиши. С привычной клавиатурой, я-бы сказал моя скорость–40-60 знаков в минуту.

                            3. 3

                              Writing a review of my new (and first ever) mechanical keyboard. Also working on a post on r2wars—the challenge, my different approaches etc.

                              I just can’t find the time. :(

                              1. 2

                                I’m writing about my colemak/custom mechanical keyboard adventure. Im also working on my table top role playing game The Source.

                                1. 2

                                  I try to do something once a week on my blog here: http://dpldocs.info/this-week-in-d/Blog.html

                                  Sometimes I don’t have time and do basically do nothing, but lately I’ve been trying to just showcase one of my old programs each week with a few paragraphs of explanation. I’ve gotta document my web framework stuff at some point too and hopefully will do that soon but idk.

                                  1. 2

                                    Thanks for sharing! I had no idea D could compile to Webassembly (http://dpldocs.info/this-week-in-d/Blog.Posted_2020_08_10.html)

                                    1. 2

                                      Oh yes, it actually got the capability over a year ago! That’s part of why I’m doing this little series lately. A lot of the things I do mindlessly are just not known to the broader audience, so even my old little things might be able to show people at least more things are possible than it may seem. But even that post took me quite a bit of time to write… a 5 minute read is still like a one hour write, so it is hard to keep up.

                                  2. 2

                                    I just published this blog post about being together (in a community, in a project, as friends).

                                    I’ve four further technical/philosophical posts on the way, all in a series called “Why Computers Work”. I assume my readers are non-technical and the challenge I’ve set myself is to clearly and coherently explain the core elements needed to explain why computers work. Also, it’s definitely why computers work, not how. ;-)

                                    1. 2

                                      I am writing the reference manual for a small software I have been working on for the past two weeks, so that I can then start talking a bit more about said small software.

                                      1. 1

                                        Last month, I wrote a long post introducing folks to babashka. Here it is:

                                        Learning about babashka (bb), a minimalist Clojure for building CLI tools

                                        It has been exactly a year since I wrote a long-form post about JavaScript.

                                        JavaScript: The Modern Parts

                                        A lot of people reached out wanting me to do a second post in that series, but I haven’t managed to put it together. My plan was to describe how one would write a static site generator “from scratch”, while using webpack/babel to build the JS/CSS assets of that static site, and use that as the tutorial context for describing the “Modern JavaScript” ecosystem, while not discussing at all the complexities of any specific JavaScript frontend framework.

                                        1. 1

                                          What am I writing right now? My dissertation. And like everyone else that has gone through the same thing, I’m kind of stuck, knowing not how I’ll manage to do it on time.

                                          Part of me is a little bothered by this, but I’m sufficiently self-aware to know that these crises are normal. So if on the one hand I’m kind of stressed, on the other I’m feeling like a tourist of my own emotions, sightseeing (or sightfeeling) through my despair.

                                          1. 1

                                            Writing up 2 or 3 more small coding examples/projects for my book. Coders love the examples, plus they’re fun to do. After I did the One Page Chess app a few weeks’ back, I realized that the best way to show coders I have something they’re interested in is to code.

                                            I’m also doing a few new graphics for the book, and I’m continuing to play around with this new content delivery site I signed up for back in May. I like the idea of completely owning my own content, but then it’s quite easy to end up in a place where you feel like a slave to an editorial calendar as well. Tying to find some happy middle ground there.

                                            1. 1

                                              I’m currently writing an article/blogpost about arithmetic operators and binary encodings. I have three versions now and I’m still far from happy. I’m still trying to find a mix between ‘hard’ theorems and accessible explanations.

                                              Topics I want to cover are:

                                              • binary encoding and two’s complement encoding
                                              • sign extension
                                              • detecting overflow for adding and subtracting signed and unsigned integers
                                              • multiplication of signed and unsigned integers
                                              • division of signed and unsigned integers

                                              The ideas I want to explain are clear to me but I’m having a hard time expressing them. For example, I talk about bit strings which can be interpreted both as a signed or as an unsigned integer a lot, and this tends to make things verbose and confusing. It will probably take me a while before I finish this one.

                                              I also have an outline for an article/blogpost about division by constants with multiplication (a compiler optimization to avoid division instructions, which are very slow). Maybe I’ll finish this one first, we’ll see.

                                              1. 1

                                                I’m working on a rationale doc for the Fennel programming language.

                                                First draft is here: http://p.hagelb.org/rationale.md.html

                                                I found that not many programming languages offer a clear “here’s why this language exists” write-up. The best one I found was that of Pyret (https://www.pyret.org/pyret-code/index.html) but Clojure’s is also pretty good. (https://clojure.org/about/rationale) Ruby’s about page is similar but not quite as to-the-point: http://www.ruby-lang.org/en/about/

                                                1. 1

                                                  I’m trying to articulate some of my rants as blog posts, problem is that I’ve appproached them from so many angles debating with so many people that I am completely lost when it comes to writing them down.

                                                  My biggest problem is that I have no clue who my audience is, I have a very bottom-up approach to my arguments and like to trace my statements down to fundamental assumptions but I find that usually when I talk to people I probe them for shared assumptions and then build enough of a shared base to communicate my ideas. With a blog I cannot do this and it’s very frustrating since it forces me to posit essentially religious values…

                                                  The post I’m writing is about ‘The problem’… I identify it as pollution (with inequality and prejudice as corollaries that serve as some elaboration for each context) and look at it in the context of the ‘developing world’ (i.e. the poor, concerned with food and shelter - have effectively no right to make decisions about humanities future), ‘complacent world’ (i.e. ‘first world problems people’, concerned with pleasure and avoiding responsibilities or other constraints to their time - have no interest or faith in their ability to influence humanities future), ‘ambitious world’ (i.e. those willing to abstain or otherwise discipline themselves to perform better within a well defined system, they are concerned with wealth and fame - don’t want to take responsibility for decisions regarding humanities future) finally there is the ‘political world’ they are interested in power and influence and are the ones who end up responsible by virtue of making the systems the ambitious participate in.

                                                  The pollution in the poor world is filth (air pollution, dirty water, physical pollution), for complacents it’s ‘fake news’ or more aptly: lies, for the ambitious it’s the incentives of the systems and for politics it’s dogma.

                                                  I can refactor the vocabulary in a dozen ways and the whole point of the outline is to start talking about solutions in the different domains but I get frustrated with how easily I start spiralling as I don’t have listener feedback to go on…

                                                  Okay just wrote this on my phone sorry if it’s a bit messy thanks for the thread.

                                                  1. 1

                                                    I’m writing a daily diary. But now I am 10 days behind at least and need to catch up before I forget everything.

                                                    1. 1

                                                      I’ve been working on a follow-up to my first book, in the form of a ‘seven languages in seven weeks’ style survey of unusual historical computing environments that could represent alternatives to the mac-os-clone monoculture that’s dominated even free software projects since the late 80s. The general rule is that everything needs to be easily run in emulation by readers. I’ve got a lot of research yet to do for it (including learning a couple programming languages in order to talk intelligently about homogeneous language-based systems), & quarantine brain has slowed my progress substantially, but I keep my list of research materials public.

                                                      1. 1

                                                        I released a small open source web crawler recently. I wrote about how the Breadth-First Search algorithm is implemented in the project here: https://github.com/joedougherty/buildaspider/blob/master/docs/BFS.rst (The root of the project is here: https://github.com/joedougherty/buildaspider/blob/master/README.rst)

                                                        I would definitely be interested to know how it reads if anyone is interested in providing feedback.

                                                        1. 1

                                                          I’ve been rewriting our query builder/ data exploration library for Grapl[0].

                                                          It’s a really fun project, pretty tough. One feature I’m adding allows you to express multiple constrains on a single edge. For example,

                                                          ProcessQuery().with_children(
                                                              ProcessQuery().with_process_name(eq="foo"),
                                                              ProcessQuery().with_process_name(eq="bar"),
                                                          )
                                                          

                                                          This was actually quite challenging to write. I have to create a sort of ‘graph zipper’ that would take a graph that has multiple edges and constraints and create a graph with only singular edges and the combined constraints.

                                                          We do client side query optimization as well and that’s a really fun one, which involves creating N queries (N = number of nodes in the signature), each one with a different root of the graph, and then running those in parallel. There’s also some type based optimizations as well.

                                                          [0] https://github.com/grapl-security/grapl