1. 4

    I marked as spam, because this kind of post doesn’t make sense to me. If it was to be shared, then it should be shared every month, not a particular month because of a particular language. All or nothing.

    1. 3

      I don’t think it falls in the category of supercomputer, but it’s pretty good, and it’s not mine, but I have access to the server of the Federal University of Minas Gerais (UFMG):

      RAM: 1 terabyte
      LSCPU output:
      CPU(s):                64
      On-line CPU(s) list:   0-63
      Thread(s) per core     2
      Cores(s) per socket:   8
      Socket(s):             4
      NUMA nodes:            8
      CPU family:            21
      Model:                 2
      Model name:            AMD Opteron(tm) Processor 6376
      CPU MHz:               1400.000
      CPU max MHz:           2300,0000
      CPU min MHz:           1400,0000
      

      I use it for performing genome assembly and genome annotation, mostly.

      Genome assembly: genome, when sequenced is fragmented, then we need to join the pieces, close the gaps checking for overlaps in the many fragments.

      Genome annotation: annotate the assembled genome, finding where genes begin, where they end, finding intron and exon regions, finding binding regions.

      1. 1

        What do the cool kids use for assembly and alignment these days? I worked in biotech ~10 years ago and I can only imagine things have changed considerably.

        1. 2

          For assembly: SPAdes, Flye, Canu, Velvet. With a 16 G of RAM, you might be able to perform assembly with some smaller datasets.

          For alignment, the same old tools are still in use: BLAST, Clustal, MUSCLE, DNAstar.

      1. 1

        Doesn’t Linux fulfill all the requirements of malleable systems? If so (it looks like to me), why isn’t it the most malleable system in history? Being younger than emacs?

        1. 3

          Doesn’t Linux fulfill all the requirements of malleable systems?

          From the definition in the Mission Statement, Linux arguably falls down on the first one:

          1. Easy to change

          Software must be as easy to change as it is to use it.

          I see this as a Sorities Paradox, of which the classic example is the “heap” where, if one grain of sand isn’t a heap of sand, and adding one grain of sand to something which isn’t a heap doesn’t make something a heap, at what point do you have a heap of sand? In this case, it’s a matter of “how easy is easy”: Linux is easily changeable in shell and Python, at least if you consider Emacs and Lisp Machines to be easy to change, but making deeper changes requires languages like C and a less-interactive development process, making it harder to iterate quickly.

          It’s a demarcation problem. I agree that there’s something here, some concept which is interesting and worth discussing, even if we can’t define it absolutely without drawing some arbitrary lines. I think it’s a continuum: Emacs is more dynamically reprogrammable than other editors, like Linux is more malleable than, say, macOS or Windows, in terms of being able to choose your working environment.

        1. 1

          Never heard of it before, but looks promising. I will give it a try!

          Is it possible to have webmentions as a comment seciton on a static website?

          1. 1

            You can, but like anything dynamic, you’d either need to implement the comments section in client-side JavaScript or else have some way of triggering your site to rebuild and redeploy whenever a new Webmention is posted.

            1. 1

              I’m doing that. My site is SSG that is built on my desktop and uploaded via good old rsync.

              I use this webmentions SaaS to collect my mentions and a client-side JS to fetch and display them. My design skills are limited, so you can have it looking much better than I did. This post has a lot of mentions at the end. The JS used is not minified and is at the end of the post, near line 152 if you want to check.

              Another cool service is bridgy which will send and collect mentions from silos and forward to your web site. I have it configured with my twitter and mastodon account. This way, I can have it send automatic tweets or toots when I post and also deliver replies and comments back to the original post.

              1. 1

                Yes, it’s possible with a dynamic webmention endpoint that somehow saves webmentions. I have such a dynamic endpoint that creates a file in a git repo, commits and pushes it. That triggers a pipeline to rebuild my blog with Hugo and then a link is displayed below the page which received the webmention.

                1. 1

                  I have done it on my static website using webmention.io. I just pull on my personal computer regularly the updates from webmention.io and then I generates the comment section using some Hugo features. Shameless plug to my blog post explaining this

                  1. 1

                    There’s https://webmention.io/ or you can have a self-hosted service somewhere.

                    1. 1

                      I believe so. I know a couple of people who are running Hugo and have this. However, I would assume that that the comments are updated only when the site is regenerates, rather than on-the-fly like WP.

                      1. 1

                        I use https://github.com/PlaidWeb/webmention.js to render my webmentions client-side so they’re always up to date, instead of needing to rebuild the site - I’ve written a bit more about it at https://www.jvt.me/posts/2019/06/30/client-side-webmentions/

                    1. 31

                      The happy state of 2D painting and 3D modelling open source software.

                      • MyPaint and Krita are, together, great software for 2D painting. Both have great default brushes and engine.
                      • Blender 2.8… is a beast. It’s a whole new level when compared with old Blender, new rendering engine, old stuff removed, interface revamped. I can see Blender becoming industry standard in the following years.
                      1. 3

                        I would add that even before 2.8, Blender was already an impressive example of software done right. Quite a few people were complaining about UX choices, but if you took the time to learn it (which is not an unreasonable expectation for a professional 3D suite), everything clicked and it made you immensely productive and even… happy.

                        I assume this is similar to how other people feel about vim or emacs (I have to admit that even though I use emacs daily, I was never blown away by it), but at least for me, Blender felt so right after the initial learning curve that I just wished (and still do) my whole system could work like Blender.

                        And the work the Blender Foundation is doing by bringing a cohesive vision to the table is extremely impressive.

                      1. 2

                        Besides social distancing… I am going to try to read glTF file in Rust using the JSON parser and 3D render on screen.

                        Ah yes, also I have to finish this illustration, which is a sort of continuation of the other illustration in my webpage.

                        1. 1

                          What program are you using for drawing?

                          1. 2

                            When on Windows: Photoshop. When on Linux: MyPaint + Krita + Aseprite. This illustration in particular on Photoshop.

                        1. 2

                          I am writing in Rust as fast as I can a command-line application to perform genome annotation [1]. An opportunity appeared to go to a conference with everything paid if I have a project to show, then here I am.

                          [1] Genome annotation is the process of parsing a genome, which is usually in FASTA format (text format), and detecting the genome features, such as coding regions, introns, exons, and other genome features. Then, output these detected features to a text file, usually in GFF3 format, which is a merely a table. The big deal here is the part of detecting the features.

                          1. 1

                            OpenRCT2 and OpenTTD are incredible projects. They surpassed what the originals could support despite the limitations imposed by their data file (index size of 1 byte for some things, for example). If only we could have the same with StarCraft without the looming risk of copyright strike.

                            1. 4

                              I thought for a second you posted the same article. :)

                              Generics, traits, and macros all had a similar learning curve for me.

                              As a C programmer, I aways wanted C with generics and interfaces (in this case traits), without inheritance.

                              Switches must be exhaustive.

                              You can use _ => to make a pattern for all other cases. This feature is pretty useful for some one that works a lot with states (game development here).

                              String/&str/Cow. There are places for all of these, but understanding where they fit in has taken a lot of time and experimentation.

                              Agreed. Not that this is bad, but it’s not straight forward for a newcomer.

                              1. 4

                                You can use _ => to make a pattern for all other cases. This feature is pretty useful for some one that works a lot with states (game development here).

                                Yep, there’s even #[non_exhaustive] which you can apply to an enum to cause an error if that default case isn’t handled for forward compatibility in libraries. At first I thought it did the opposite.

                                String/&str/Cow. There are places for all of these, but understanding where they fit in has taken a lot of time and experimentation.

                                Agreed. Not that this is bad, but it’s not straight forward for a newcomer.

                                Yeah, playing around with an IRC message type that can either be owned or borrowed (similar to Cow) was what made some of it click for me.

                                This article was also really insightful in regards to strings. https://fasterthanli.me/blog/2020/working-with-strings-in-rust/

                                1. -1

                                  Also:

                                  No varargs. The only way to implement something in the same pattern as format! is to make a macro, which can’t really be attached to a type. You can cheat and use format_args! but this isn’t a clean solution.

                                  Agree on this – probably 80% of all macros only exist to get a “function” with varargs; and it’s totally silly (like the defenses for requiring ; to end lines).

                                1. 4

                                  I think the results in this thread really speak to the bias we have in the community here towards Rust. The social clout of the Rust community is really fascinating, it’s managed to become a very hype-driven social-media-driven language.

                                  1. 1

                                    It’s been hard work :). Also 🦀❤️🦞

                                    1. 1

                                      I would say choosing a language that prioritizes what Rust prioritizes and, to some degree, differs itself from other languages ​​is a legitimate reason, not merely bias driven by social media.

                                    1. 2

                                      I am gonna try to compile ANGLE library and use their layered GLES on Windows. The library exposes a GLES API on top of Direct3D or Vulkan, so it is neat for portability. :)

                                      1. 3

                                        First Rust, then C. If scripting is necessary, I use Lua as a supporting language.

                                        I still use C for the very specific case of using dlopen to optionally load libraries and use C APIs, then I expose a much simpler version of the API to Rust.

                                        Following @mortimer’s example, I care about correctness, performance and safety, in that order, which I think suits game development.

                                        1. 5

                                          I am learning Rust, so I am porting a cross-platform framework in C that I have for creating windows and exposing GL/D3D. Let’s see how it goes. I want to write a little too, so I can post my 1-month experience.