• 0 Posts
  • 25 Comments
Joined 1 year ago
cake
Cake day: July 4th, 2023

help-circle



  • I recently spent some time optimizing a small Julia program I wrote that generates a lookup table of brainfuck constants. Because it only needs to run once, I originally didn’t care about performance when I originally wrote it (and the optimization was mostly for fun).

    I achieved an ~100x improvement by adding types, using static arrays and memoization. In the end, the performance was mostly limited by primitive math operations, I tried using multiple threads, but any synchronization destroyed the performance.

    However, the most impressive thing was the ability of Julia to scale from dynamically typed scripting language to almost a compiled language with minimal changes to the code.





  • I don’t really have a single favorite a language, if I am able to choose freely it depends on the task.

    • C++ for natively compiled programs and C interoperability, I like the types from the STL and templates.
    • Clojure is IMO great for data-oriented programs, I really like the immutability and it being a lisp. The java interop and the ability to compile to JavaScript with clojurescript can also be useful.
    • Julia for smaller (mostly numerical) programs that should be fast at runtime. The type system is great in being optional, but strong and significantly improving performance when types annotations are used.
    • Fennel (or Lua) is definitely my favorite Language for embedding into larger programs and scripting. Fennel has the advantage of being a lisp and cleanly compiling to lua.
    • brainf*ck is great as a simple language to have fun and enjoy programming



  • eeleech@lemm.eetoLinux@lemmy.mlbcachefs is now in linux-next!
    link
    fedilink
    arrow-up
    6
    arrow-down
    1
    ·
    1 year ago

    RAID 5/6 is somewhat broken, and some people might consider the lack of built in encryption or support for a cache disk as problems. For some reason it seems popular to blame it for data loss.

    That being said, it is my favorite file system and I never had problems with data loss, but I use ECC RAM on my desktop as is strongly recommended if you use btrfs or zfs (another potential downside).




  • I genuinely don’t know if scratch is the right choice or a simple text based language would be better, especially for the older kids. Just from my personal experience, I started programming in BASIC at 12 and don’t think I would have had as much fun and continued programming if i had used scratch instead.


  • You don’t even need to look at the extension to identify most file formats, as there are unique magic numbers stored at the beginning of most (binary) formats. Only when a single binary format is reused to appear as two different formats to the user, e.g. zip and cbz are extensions relevant. This is how the file command and most (?) Linux file explorers identify files, and why file extensions are traditionally largely irrelevant on Linux/Unix.

    This means your idea of suggesting software based on the file type is even more practicable than you described.




  • I would consider that ifconfig is deprecated on many distros and would therefore teach about iproute2 (mostly the ip and ss commands) instead. Additionally I would consider editing files essential, even if it is with nano.

    Maybe mention more modern and simpler help tools like tldr, as they could be even more useful to beginners.

    To introduce the shell and utilities, I would try to find a somewhat realistic use case that combines multiple aspects, like analyzing some files or spellchecking instead of simply mentioning every feature one by one.