Golang I don’t really like overall. Don’t get me wrong, I see great utility, but the simplicity is both limiting and freeing. Unfortunately I seem to mostly feel the limiting aspects.
NixOS and Nix, though, feel absolutely game-changing.
It’s a better docker than docker, a better docker compose than docker compose, a better way of organizing and provisioning systems (amazing for network appliances), and it skips the entire dependency hell that has become the norm in a lot of ecoystems by just bundling up everything.
There’s a lot more–https in like two config lines w/ Nginx and Let’s Encrypt–but you can discover that on your own.
I probably won’t be able to do it justice with a comment from my phone 😕
But you can Google around! For me, it’s reproducibility, configuration management, and an incredible package ecosystem all in one. This coincidentally makes it incredible for development environments and tooling.
here are a few of the things i’d like to set up for myself w/ NixOS this year:
nearly-zero-touch OS installation w/ ZFS partition management for a new home server
OS takeover for x86 & ARM VPSes (e.g. Hetzner), with the ability to construct custom partitioning as above
Equinix metal provisioning automation so i can do all of the above but for bare spot instances
all of these will recycle common pieces of configuration so each system can be administered in a similar manner.
they will also be managed “declaratively” and as close to statelessly as possible so remote systems can be scaled to zero when not in use.
because Nix makes it so easy to manipulate the packages it uses at all of these stages, all software involved can be upgraded, downgraded, or arbitrarily patched.
in addition to the above, Nix can be used to construct and run OCI images so this rube goldberg machine can also be used to build, deploy, and orchestrate containerized applications.
it’s sort of an absurd force multiplier for computer infrastructure; not only can individual contributors do more, it’s more portable & less expensive than the managed solutions cloud providers offer to accomplish similar goals.
funny enough i yesterday itself shifted to nixos, was looking through it since somedays.
really amazed by how it handles everything, but still is able to mess up some basic things.
which is your current distro?
Right now I’m kinda finishing learning Haskell, always wanted to go beyond basic stuff in Haskell and also I’m kinda in a search for “perfect” programming language for me xD I guess it turns out that Haskell is not perfect for me but I’m happy that I learned it anyway.
Going through “Crafting interpreters”
Trying to learn Latin with “Lingua latina per se illustrata” but to be honest there is always something more urgent than learning “dead” language. But I highly recommend this book, I’m surprise that this method works at all but it’s perfect.
Get my hands this week also on “Fundamentals of Electric Propulsion”, haven’t read a page yet and also it’s definitely outside my current career path.
Many other things on my todo, but as always no time for that xd
I had three years of Latin in high school and have retained approximately zero, probably more as a result of my study skills than time. Seeing your mention of “Lingua latina per se illustrata” makes em want to pick it up and see if anything comes back.
I’ll reply later if I’ll have time to make a list (likely not). But generally it’s official documentation, man pages, blog posts, talk recordings, practice.
I’m also learning C++ and Japanese. I’ve been learning/using both daily for roughly 35 years now and the more I learn, the less I know! I guess I’d say I’m roughly “very fluent in bad {C++,Japanese}” at this point.
Wow! I could see that with C++ but maybe not Japanese. I’m less than one year on Japanesen but maybe 5 or 6 on C++ (I don’t write C++ professionally though).
I’m at the point where I can carry on normal everyday and business conversations, and comfortably read contemporary novels and newspapers as well as writing on topics I’m interested in (programming, astronomy) but still, my reading is a bit slower than I’d like and almost every day I run across an old saying or proverb, or some technical jargon from a field I’m not familiar with, or just some cultural context with which native speakers my age are all familiar but which, not having visited japan before age 15, and not having Japanese parents, I missed out on.
As an example, imagine living in North America and having never seen or possibly heard of The Simpsons or Star Trek, or in Canada and not knowing anything about 22 Minutes and you get the idea. By comparison I learned and went to school in French only up to age 18, but feel much more fluent and aware of cultural context in that language.
All in all it’s still a lot of fun, but really the more you know, the more you realise you don’t know.
This should be called “living life on hard mode” :)
I grew up learning Chinese (not fluent), and only recently learned that Japanese uses Kanji + 2 or 3 other alphabets. Not sure how I didn’t know that
In some sense that reminds me of C++ – it’s C plus multiple things that many C programmers find foreign and confusing. I know C, and most of the C++ 11/14 stuff, but it’s getting even more specialized with later editions.
Great! I’m a native Chinese speaker and a long term English learner. I start to learn German recently. If you need help with Chinese colloquial or idioms, I would be happy to assist!
I am also learning Mandarin! My wife’s family are Cantonese speakers, but I never managed to pick up much of it and there seems to be better learning resources for Mandarin. That said I am finding it hard going, and last month lost my 480-ish day streak on Duolingo.
I’m having more success learning to solve the 4x4 Rubik’s cube unaided. Personal best at the moment is 9m 11s.
Tech-wise my team is reading and discussing the first part of Crafting Interpreters.
Most recent learning project will be learning to play the Irish Bouzouki. On Saturday I “accidentally” picked up one at my local music shop: I tried it while waiting to pay for something else and fell in love with the sound. I have no idea how it is normally played, I’ve been playing it like a weirdly tuned (ADAD, with paired strings) guitar so far.
I can highly recommend Hanzi Hero for learning Hanzi. It’s worked for me where nothing else really has. That being said, it only teaches characters and some words, not grammar.
How to write a Vim syntax highlighter … I’ve used Vim for almost 20 years now, and I credit its shell highlighter with helping me learn shell. If I make a syntax error, it’s often obvious from the colors (e.g. quoted strings).
I never looked at the highlighters, just used them. But now I’ve found that Vim syntax definitions are sort of gobbledygook to me, even though I’m used to reading a lot of shell gobbledygook
If anyone has experience with this, I’d be interested. I’m trying not to just copy-paste-hack, because I think there are lots of subtle bugs that way …
I also read about TreeSitter and incremental lexing, and it feels like there is a missing piece. The original paper its based on actually instrumented a full lex-like generator, with support for advanced features like lexical states.
So you could reuse an existing lexer, and get incrementality for free, I believe. It worked via runtime instrumentation, not static analysis, so it’s very general.
If anyone knows more about that, I’d be interested too
I like where you’re going with using proper lexers, I agree there is room for improvement. However today many/most file extensions just get mapped to a few globs of regexp. This is hugely problematic for some tricky languages (like ruby), where longer files will dramatically lag at edits for files starting at a couple hundred lines. I had experienced around 700ms lag on a 400 line ruby file, eventually disabling syntax highlighting for files that size.
IMO, one of the biggest benefits vim syntax highlighting could receive today is the switch to a regexp implementation with the promise of linear growth in execution time. Some language syntax would not be describable by RE anymore, which is good! These imposed limitations and a reduced feature set would force adopting different approaches, like what you’re suggesting.
The regexp implementation provided by this package is guaranteed to run in time linear in the size of the input. (This is a property not guaranteed by most open source implementations of regular expressions.)
Oh interesting – is this the default vim highlighter for Ruby, or something third party? I would have thought it would be ironed out by now, including perf problems.
Maybe it depends on how much vim devs use a language – I would imagine they use shell more than Ruby
I don’t think I’ve encountered syntax highlighter slowness.. I thought the bad regexes usually result in wrong highlighting, because vim has some hacks around thresholds and re-scanning, to cut off bad performance. And “hints” to speed things up. It seems a bit hacky to be honest
I’m definitely all-in on automata-based regexp! I tend to call it “regular languages” vs. “Perl-style regexes”
A few weeks ago I compared the situation to SQL, with Perl-ish “imperative doodads” messing up the perf characteristics of a clean, non-deterministic model:
But it’s also true that most languages can’t have purely regular lexers. So then people fall back on Perl-ish stuff like lookahead and lookbehinds, and it’s not surprising that those are slow.
From looking at both vim and TreeSitter, there does need to be some other lexing model … But I think I will need to make do with what’s there for the time being.
One thing I’m curious about is if there’s anyway to test the highlighters automatically, or if it’s all just tested interactively. Shell lexing has so many corner cases :-(
I’ve been working through CMU’s open Advanced Database Systems course. Andy Pavlo is a fantastic lecturer, and the syllabus has some papers that I’ve been meaning to digest for awhile now.
I’m taking it slow to absorb things, doing my own small toy projects to make sure I’m following the material, etc.
I’m pretty deep in the Nix rabbit hole now which means learning a lot more about devops & how my Linux systems actually work. On the programming side (aside from Nix), I have been learning OCaml off & on the past 2 years to try to pick up a reasonably quick functional language (compile performance, runtime performance, not-spending-hours-in-the-type-system for coding output performance).
I’m learning cryptography from the ground up. I’m reading Karz and Lindell as well as Dan Boneh and Victory Shoup’s books. Studying the implementation of Golang crypto package. Filippo Valsorda does a great job explaining many things practical. So, learning from his posts and his code too. I use Rust for programming these bits.
I considered doing that sometime ago. But then I’m working out the most primitive details of multi-precison numbers, multiplication, division, montgomery reduction, and such “low-level” aspects of connecting theory and practice. That said, thank you for reminding.
I don’t know if it’s still up, but several years back I did the first few sessions of Dan Boneh’s introductory crypto course (maybe coursera?) before I got annoyed at the platform (I was looking for more of an ~audit experience that I could check in/out of as it was covering bits I did/didn’t know already…)
Are you learning pixel art from a book? Any recommendations? I’ve been eyeing learning pixel art but never got around to it; didn’t know where to even start!
Check out “FF DOT: The Pixel Art of Final Fantasy” from a local library if you can. It has some very fun interviews from the original artist and how she made the transition from classical art. I wouldn’t recommend a purchase of it on the grounds of dollars-to-education alone, but if you can check it out or borrow it, it was a lovely read.
As for education materials, the best Ive seen lately are from artists on patreon.
Factor has wonderful documentation and libraries, but I find it hard to write idiomatic Factor … which is probably a good thing because it’s stretching my mind.
You are wonderful! But Discord isn’t. I signed up and then got an email saying my account had been hacked, and the process to get back in was crazy (so I didn’t do it).
$work: modern 3D graphics pipelines and computational geometry. It’s very different from what I’ve been doing lately and hugely rewarding. Also very intimidating. Computational geometry was pretty low on my list of things to learn on my own back in uni, and nowhere in my curricula – I know my way around the basics but much of that was picked up informally over the years, from reading source code and the like. It’s a little foreign for someone whose math background was shaped by an EE curricula.
I’m moderately happy that, even though it’s gone largely unused for a few years, my math is still good enough that I can mostly approach this by reading selected chapters. Most of the basics (e.g. Euclidean vectors) are either second-nature or things that I was interested in back when I had more time for pure mathematics (e.g. quaternions) so I can generally google/textbook my way into anything.
$notwork: I’m playing with RISC-V. This is actually a good excuse to do some security/RE and OS development work, which is what I’ve always dreamed of doing. Back when I finished uni and had to stop being a pest in my parents’ home, the labour market in my area was hardly rewarding in these fields (it fluctuated between “absent” and “largely amateurish”, it still does in fact) so I ended up doing embedded development instead. I didn’t regret it one bit, I loved doing that; but now that the zombie apocalypse has made remote working somewhat more widespread, I’m kind of hoping to get into it a few years down the line. If the world of computer graphics doesn’t suck me in, that is; if it does, it’s still as rewarding a hobby as it was twenty years ago.
I’m very curious what $work is where you get work on computational geometry. I’m a huge fan, and I’ve been curious where in industry one gets to work on this type of thing (I’m still in academia), so having some insight into what you do would be super useful when I eventually go job hunting :)
I’m very curious what $work is where you get work on computational geometry.
The answer might be somewhat disappointing in strictly academic terms but $work = I’m making games :-). I can’t say much for obvious reasons but the game I’m working on has a CAD-like component of sorts; and in order for it to be fun, lots of things have to happen automatically. Think Kerbal Space Program but the rocket design module tries to do more of “the right thing” by itself.
I don’t think I’ll need to write too much original CG code in the next few months – it’s a little early to tell but I expect most of the stuff I need is already present in a library out there, that’s generally been the case so far. But I also can’t just codemonkey my way around it. Game players are notoriously unconstrained users, if your algorithm has a cornercase, they’ll find it, so even if all I end up doing is knitting third-party code, I need to be able to understand what it does and why.
That’s the most pressing concern, in any case. There’s a less pressing concern in the tooling department that may need some lower-level work. That’s for later down the road but I don’t want to cram for it, either.
I try to switch to helix, and use Nix/NixOS to the extent that I package my own software oackages with patches.
Language: I dabbled into Bodenkunde / soil science lately and need to improve on my english vocabulary for that topical area. Which means handwriting and paper cards, as this is the way my brain seem to learn the easiest.
Other than that, minimalism. Way too much cruft in my life.
Differential geometry. I’d like to catch up before I start my MSc in Maths later this year, my background in more in algebra and topology. My day job involves a lot of classical 3D geometry, so I’m excited about potential applications there. I’m watching lectures from Discrete Differential Geometry by Keenan Crane and reading through Introduction to Smooth Manifolds by John M. Lee. It’s a lot of material, hard exercises, and I don’t have much time to devote to it, so it’s been very slow, but I’m enjoying it a lot.
Nix and NixOS. It’s been a force multiplier for me in the past months. I feel reasonably competent packaging things, but I’m still exploring deployment patterns. I was lucky enough to become involved in a commercial project that involves NixOS, so I’m motivated to dig deep :)
Short story: Stopped to program at work a year ago when changing team and position. I tried to learn other programming languages but never went further than the bases mostly because I had no usecases or projects to use them. So I am trying to explore the creative/artistic part for now : Sonic Pi, Super Collider, etc.
For me, stack-based programming. Mostly as a hobby thing. A lot of Factor and GForth atm. Considering trying to get pForth added to the TIC-80, but haven’t quite worked up the level of interest I -think- I’ll need for it.
You could try the newly released Linux Kernel Programming: A comprehensive and practical guide to kernel internals, writing modules, and kernel synchronization. I haven’t read it either, but it looks well-written.
Nice! How are you going about it? What are your impressions? I recently completed Google’s tutorial myself, which is very introductory, but I’m fascinated.
Thanks for these links, super useful, I’m still in the early steps and going through the webgpufundamentals site pages while coding a small library on the side to simplify what I think will be common ops and learn it through experience.
Overal I love webgpu, the way we no longer need to be bound to a specific context, and have a common global device to work with; the texture oriented approach is also very welcoming, in the end everything is an array of bytes that we chose to work with as we please; the stateless approach is really cool; I’m still struggling a bit with the buffer packing and bit paddings, but I think it might just be a matter of gaining some experience with it a bit more, but yeah it has been a pleasure so far
Just this week I have been playing around with drawing the Mandelbrot set with WebGL. I can see the less stateful approach of WebGPU is more attractive, but sadly WebGPU is a proprietary non-standard.
Mainstream browser support is still limited to Chromium, but it is also available in Safari Technology Preview. At one point it was available in Firefox behind a feature flag. Not sure what happened to that, but I assume Mozilla’s active role in editing the standard means they’re committed to implementing it.
Parenting is probably the big one, with a 2 month old daughter.
I’m learning a bit of Pharo and mostly Interlisp in relation to my exploratory programming essay I posted here the other day. I received a lot of nice ideas from it and learned of some very nice projects.
Interlisp has been very fun to explore tbh.
Apart from that Japanese, going deeper into common lisp and the LispWorks offerings (CAPI mostly).
Bit of a break at the mo due to travel, but when I next sit still for a few weeks the main thing will be deepening & broadening my wx GUI skills. Just starting to grasp managing sizer layouts a bit better - it’s really all about keeping things simple. Like everything, I guess.
I started about a week ago and already I know I will go very slow too. No problem, as long as it’s enjoyable. I don’t think I will create my own language, I am just interested in learning more about the subject. But who knows?
I am about to start my Bachelor thesis, about combating the Thompson Attack in the context of Go projects and the Go compiler. It makes me learn about bootstrappable builds, reproducible builds, and how easy it is to break those properties! It’s really fun and really scary! And I’m also learning about how the Go compiler works, which is really interesting software in my opinion: it’s very easy to bootstrap, very self contained when it comes to the software and libraries it needs, and since version 1.21 it’s reproducible, which makes it perfect for my thesis!
Golang and Nix/NixOS.
Golang I don’t really like overall. Don’t get me wrong, I see great utility, but the simplicity is both limiting and freeing. Unfortunately I seem to mostly feel the limiting aspects.
NixOS and Nix, though, feel absolutely game-changing.
Nice,
Out of curiosity what’s so special about Nix and NixOS.
I’m just a noob wanting to learn more about it
It’s a better docker than docker, a better docker compose than docker compose, a better way of organizing and provisioning systems (amazing for network appliances), and it skips the entire dependency hell that has become the norm in a lot of ecoystems by just bundling up everything.
There’s a lot more–https in like two config lines w/ Nginx and Let’s Encrypt–but you can discover that on your own.
I probably won’t be able to do it justice with a comment from my phone 😕
But you can Google around! For me, it’s reproducibility, configuration management, and an incredible package ecosystem all in one. This coincidentally makes it incredible for development environments and tooling.
So… Pretty much everything related to software. 🙃
here are a few of the things i’d like to set up for myself w/ NixOS this year:
all of these will recycle common pieces of configuration so each system can be administered in a similar manner.
they will also be managed “declaratively” and as close to statelessly as possible so remote systems can be scaled to zero when not in use.
because Nix makes it so easy to manipulate the packages it uses at all of these stages, all software involved can be upgraded, downgraded, or arbitrarily patched.
in addition to the above, Nix can be used to construct and run OCI images so this rube goldberg machine can also be used to build, deploy, and orchestrate containerized applications.
it’s sort of an absurd force multiplier for computer infrastructure; not only can individual contributors do more, it’s more portable & less expensive than the managed solutions cloud providers offer to accomplish similar goals.
funny enough i yesterday itself shifted to nixos, was looking through it since somedays. really amazed by how it handles everything, but still is able to mess up some basic things. which is your current distro?
Can you be a bit more specific? Happy to see why these are issues (if there is a why).
I came from Arch Linux. I’ve been on NixOS for a few months now I think.
What basic things has it messed up on your end?
Right now I’m kinda finishing learning Haskell, always wanted to go beyond basic stuff in Haskell and also I’m kinda in a search for “perfect” programming language for me xD I guess it turns out that Haskell is not perfect for me but I’m happy that I learned it anyway.
Going through “Crafting interpreters”
Trying to learn Latin with “Lingua latina per se illustrata” but to be honest there is always something more urgent than learning “dead” language. But I highly recommend this book, I’m surprise that this method works at all but it’s perfect.
Get my hands this week also on “Fundamentals of Electric Propulsion”, haven’t read a page yet and also it’s definitely outside my current career path.
Many other things on my todo, but as always no time for that xd
I had three years of Latin in high school and have retained approximately zero, probably more as a result of my study skills than time. Seeing your mention of “Lingua latina per se illustrata” makes em want to pick it up and see if anything comes back.
Unix, linkers, C, C++, assemblers, package managers, build systems, Rust.
Just recently understood to some extent how forwarding references work in C++.
Just curious how are you learning those,
Would you be able to share some resources
I’ll reply later if I’ll have time to make a list (likely not). But generally it’s official documentation, man pages, blog posts, talk recordings, practice.
C++ and Japanese.
I’m also learning C++ and Japanese. I’ve been learning/using both daily for roughly 35 years now and the more I learn, the less I know! I guess I’d say I’m roughly “very fluent in bad {C++,Japanese}” at this point.
Wow! I could see that with C++ but maybe not Japanese. I’m less than one year on Japanesen but maybe 5 or 6 on C++ (I don’t write C++ professionally though).
I’m at the point where I can carry on normal everyday and business conversations, and comfortably read contemporary novels and newspapers as well as writing on topics I’m interested in (programming, astronomy) but still, my reading is a bit slower than I’d like and almost every day I run across an old saying or proverb, or some technical jargon from a field I’m not familiar with, or just some cultural context with which native speakers my age are all familiar but which, not having visited japan before age 15, and not having Japanese parents, I missed out on.
As an example, imagine living in North America and having never seen or possibly heard of The Simpsons or Star Trek, or in Canada and not knowing anything about 22 Minutes and you get the idea. By comparison I learned and went to school in French only up to age 18, but feel much more fluent and aware of cultural context in that language.
All in all it’s still a lot of fun, but really the more you know, the more you realise you don’t know.
I’m more of a Rust and Greek type of guy myself.
This should be called “living life on hard mode” :)
I grew up learning Chinese (not fluent), and only recently learned that Japanese uses Kanji + 2 or 3 other alphabets. Not sure how I didn’t know that
In some sense that reminds me of C++ – it’s C plus multiple things that many C programmers find foreign and confusing. I know C, and most of the C++ 11/14 stuff, but it’s getting even more specialized with later editions.
nihongo mo sukoshi hanasemasu
I’m learning Mandarin from scratch, and going back to classes to improve my once good but now terrible French.
Computer wise, whatever book I have at the moment. Dylan (the Lisp-like) is my current book.
Great! I’m a native Chinese speaker and a long term English learner. I start to learn German recently. If you need help with Chinese colloquial or idioms, I would be happy to assist!
Thank you!
I am also learning Mandarin! My wife’s family are Cantonese speakers, but I never managed to pick up much of it and there seems to be better learning resources for Mandarin. That said I am finding it hard going, and last month lost my 480-ish day streak on Duolingo.
I’m having more success learning to solve the 4x4 Rubik’s cube unaided. Personal best at the moment is 9m 11s.
Tech-wise my team is reading and discussing the first part of Crafting Interpreters.
Most recent learning project will be learning to play the Irish Bouzouki. On Saturday I “accidentally” picked up one at my local music shop: I tried it while waiting to pay for something else and fell in love with the sound. I have no idea how it is normally played, I’ve been playing it like a weirdly tuned (ADAD, with paired strings) guitar so far.
I can highly recommend Hanzi Hero for learning Hanzi. It’s worked for me where nothing else really has. That being said, it only teaches characters and some words, not grammar.
How to write a Vim syntax highlighter … I’ve used Vim for almost 20 years now, and I credit its shell highlighter with helping me learn shell. If I make a syntax error, it’s often obvious from the colors (e.g. quoted strings).
I never looked at the highlighters, just used them. But now I’ve found that Vim syntax definitions are sort of gobbledygook to me, even though I’m used to reading a lot of shell gobbledygook
https://github.com/vim/vim/blob/master/runtime/syntax/sh.vim
https://vimhelp.org/syntax.txt.html#sh.vim
If anyone has experience with this, I’d be interested. I’m trying not to just copy-paste-hack, because I think there are lots of subtle bugs that way …
I also read about TreeSitter and incremental lexing, and it feels like there is a missing piece. The original paper its based on actually instrumented a full lex-like generator, with support for advanced features like lexical states.
So you could reuse an existing lexer, and get incrementality for free, I believe. It worked via runtime instrumentation, not static analysis, so it’s very general.
If anyone knows more about that, I’d be interested too
I like where you’re going with using proper lexers, I agree there is room for improvement. However today many/most file extensions just get mapped to a few globs of regexp. This is hugely problematic for some tricky languages (like ruby), where longer files will dramatically lag at edits for files starting at a couple hundred lines. I had experienced around 700ms lag on a 400 line ruby file, eventually disabling syntax highlighting for files that size.
IMO, one of the biggest benefits vim syntax highlighting could receive today is the switch to a regexp implementation with the promise of linear growth in execution time. Some language syntax would not be describable by RE anymore, which is good! These imposed limitations and a reduced feature set would force adopting different approaches, like what you’re suggesting.
Specifically supporting this, go’s regexp package:
From the go docs:
Holy cow, that’s appalling! And I thought emacs cperl mode was slow!
Oh interesting – is this the default vim highlighter for Ruby, or something third party? I would have thought it would be ironed out by now, including perf problems.
Maybe it depends on how much vim devs use a language – I would imagine they use shell more than Ruby
I don’t think I’ve encountered syntax highlighter slowness.. I thought the bad regexes usually result in wrong highlighting, because vim has some hacks around thresholds and re-scanning, to cut off bad performance. And “hints” to speed things up. It seems a bit hacky to be honest
I’m definitely all-in on automata-based regexp! I tend to call it “regular languages” vs. “Perl-style regexes”
A few weeks ago I compared the situation to SQL, with Perl-ish “imperative doodads” messing up the perf characteristics of a clean, non-deterministic model:
https://lobste.rs/s/habq4f/unexplanations_sql_is_syntactic_sugar
And some problems in theory and in practice I wrote about: https://www.oilshell.org/blog/2020/07/eggex-theory.html
But it’s also true that most languages can’t have purely regular lexers. So then people fall back on Perl-ish stuff like lookahead and lookbehinds, and it’s not surprising that those are slow.
From looking at both vim and TreeSitter, there does need to be some other lexing model … But I think I will need to make do with what’s there for the time being.
One thing I’m curious about is if there’s anyway to test the highlighters automatically, or if it’s all just tested interactively. Shell lexing has so many corner cases :-(
Please do share what you come up with.
Trying to read the book “Small Teaching: Everyday Lessons from the Science of Learning”
I love the book, I think everyone should read that book
I’ve been working through CMU’s open Advanced Database Systems course. Andy Pavlo is a fantastic lecturer, and the syllabus has some papers that I’ve been meaning to digest for awhile now.
I’m taking it slow to absorb things, doing my own small toy projects to make sure I’m following the material, etc.
https://15721.courses.cs.cmu.edu/spring2024/schedule.html
After lifetime of webdev, I am learning basics of C with K&R
The Vertex AI APIs.
I’m pretty deep in the Nix rabbit hole now which means learning a lot more about devops & how my Linux systems actually work. On the programming side (aside from Nix), I have been learning OCaml off & on the past 2 years to try to pick up a reasonably quick functional language (compile performance, runtime performance, not-spending-hours-in-the-type-system for coding output performance).
I’m learning cryptography from the ground up. I’m reading Karz and Lindell as well as Dan Boneh and Victory Shoup’s books. Studying the implementation of Golang crypto package. Filippo Valsorda does a great job explaining many things practical. So, learning from his posts and his code too. I use Rust for programming these bits.
You might enjoy this: https://www.cryptopals.com.
I considered doing that sometime ago. But then I’m working out the most primitive details of multi-precison numbers, multiplication, division, montgomery reduction, and such “low-level” aspects of connecting theory and practice. That said, thank you for reminding.
I don’t know if it’s still up, but several years back I did the first few sessions of Dan Boneh’s introductory crypto course (maybe coursera?) before I got annoyed at the platform (I was looking for more of an ~audit experience that I could check in/out of as it was covering bits I did/didn’t know already…)
Pixel art. Reading a book I got from humblebundle.
Are you learning pixel art from a book? Any recommendations? I’ve been eyeing learning pixel art but never got around to it; didn’t know where to even start!
Check out “FF DOT: The Pixel Art of Final Fantasy” from a local library if you can. It has some very fun interviews from the original artist and how she made the transition from classical art. I wouldn’t recommend a purchase of it on the grounds of dollars-to-education alone, but if you can check it out or borrow it, it was a lovely read.
As for education materials, the best Ive seen lately are from artists on patreon.
Pixel Art for Game Developers by Daniel Silber
Definitely check out Saint11’s pixel art tutorials0.
Actually I purchased (donation) it on itch today.
Factor https://factorcode.org/
and maybe also min https://min-lang.org/
Factor has wonderful documentation and libraries, but I find it hard to write idiomatic Factor … which is probably a good thing because it’s stretching my mind.
struggling happily with a new language is a good sign, but if you’d like to know where to look we’re always willing to help.
You are wonderful! But Discord isn’t. I signed up and then got an email saying my account had been hacked, and the process to get back in was crazy (so I didn’t do it).
yeah, I prefer not to use discord as well. We still do monitor the sourceforge mailing list on that link, if that helps.
It does! Thank you!
Nix, Rust, Slint.
$work: modern 3D graphics pipelines and computational geometry. It’s very different from what I’ve been doing lately and hugely rewarding. Also very intimidating. Computational geometry was pretty low on my list of things to learn on my own back in uni, and nowhere in my curricula – I know my way around the basics but much of that was picked up informally over the years, from reading source code and the like. It’s a little foreign for someone whose math background was shaped by an EE curricula.
I’m moderately happy that, even though it’s gone largely unused for a few years, my math is still good enough that I can mostly approach this by reading selected chapters. Most of the basics (e.g. Euclidean vectors) are either second-nature or things that I was interested in back when I had more time for pure mathematics (e.g. quaternions) so I can generally google/textbook my way into anything.
$notwork: I’m playing with RISC-V. This is actually a good excuse to do some security/RE and OS development work, which is what I’ve always dreamed of doing. Back when I finished uni and had to stop being a pest in my parents’ home, the labour market in my area was hardly rewarding in these fields (it fluctuated between “absent” and “largely amateurish”, it still does in fact) so I ended up doing embedded development instead. I didn’t regret it one bit, I loved doing that; but now that the zombie apocalypse has made remote working somewhat more widespread, I’m kind of hoping to get into it a few years down the line. If the world of computer graphics doesn’t suck me in, that is; if it does, it’s still as rewarding a hobby as it was twenty years ago.
I’m very curious what $work is where you get work on computational geometry. I’m a huge fan, and I’ve been curious where in industry one gets to work on this type of thing (I’m still in academia), so having some insight into what you do would be super useful when I eventually go job hunting :)
The answer might be somewhat disappointing in strictly academic terms but $work = I’m making games :-). I can’t say much for obvious reasons but the game I’m working on has a CAD-like component of sorts; and in order for it to be fun, lots of things have to happen automatically. Think Kerbal Space Program but the rocket design module tries to do more of “the right thing” by itself.
I don’t think I’ll need to write too much original CG code in the next few months – it’s a little early to tell but I expect most of the stuff I need is already present in a library out there, that’s generally been the case so far. But I also can’t just codemonkey my way around it. Game players are notoriously unconstrained users, if your algorithm has a cornercase, they’ll find it, so even if all I end up doing is knitting third-party code, I need to be able to understand what it does and why.
That’s the most pressing concern, in any case. There’s a less pressing concern in the tooling department that may need some lower-level work. That’s for later down the road but I don’t want to cram for it, either.
I try to switch to helix, and use Nix/NixOS to the extent that I package my own software oackages with patches.
Language: I dabbled into Bodenkunde / soil science lately and need to improve on my english vocabulary for that topical area. Which means handwriting and paper cards, as this is the way my brain seem to learn the easiest.
Other than that, minimalism. Way too much cruft in my life.
Sonic Pi and live coding 🫣 also Mandarin.
Short story: Stopped to program at work a year ago when changing team and position. I tried to learn other programming languages but never went further than the bases mostly because I had no usecases or projects to use them. So I am trying to explore the creative/artistic part for now : Sonic Pi, Super Collider, etc.
For me, stack-based programming. Mostly as a hobby thing. A lot of Factor and GForth atm. Considering trying to get pForth added to the TIC-80, but haven’t quite worked up the level of interest I -think- I’ll need for it.
Gleam has me very excited.
Understanding the Linux Kernel 3rd edition, It’s pretty out of date but I hope to be able to catch up with reality later…
You could try the newly released Linux Kernel Programming: A comprehensive and practical guide to kernel internals, writing modules, and kernel synchronization. I haven’t read it either, but it looks well-written.
webgpu and wgsl
Nice! How are you going about it? What are your impressions? I recently completed Google’s tutorial myself, which is very introductory, but I’m fascinated.
Thanks for these links, super useful, I’m still in the early steps and going through the webgpufundamentals site pages while coding a small library on the side to simplify what I think will be common ops and learn it through experience.
Overal I love webgpu, the way we no longer need to be bound to a specific context, and have a common global device to work with; the texture oriented approach is also very welcoming, in the end everything is an array of bytes that we chose to work with as we please; the stateless approach is really cool; I’m still struggling a bit with the buffer packing and bit paddings, but I think it might just be a matter of gaining some experience with it a bit more, but yeah it has been a pleasure so far
Just this week I have been playing around with drawing the Mandelbrot set with WebGL. I can see the less stateful approach of WebGPU is more attractive, but sadly WebGPU is a proprietary non-standard.
I’d love to see your Mandelbrot work, but I’m surprised by your claim that WebGPU is a proprietary non-standard. Have you not seen this?:
https://www.w3.org/TR/webgpu/
Mainstream browser support is still limited to Chromium, but it is also available in Safari Technology Preview. At one point it was available in Firefox behind a feature flag. Not sure what happened to that, but I assume Mozilla’s active role in editing the standard means they’re committed to implementing it.
I saw that I could not use it when I looked at https://caniuse.com/webgpu
Parenting is probably the big one, with a 2 month old daughter.
I’m learning a bit of Pharo and mostly Interlisp in relation to my exploratory programming essay I posted here the other day. I received a lot of nice ideas from it and learned of some very nice projects.
Interlisp has been very fun to explore tbh.
Apart from that Japanese, going deeper into common lisp and the LispWorks offerings (CAPI mostly).
Svelte, Tailwind, and TypeScript. Svelte is great. Tailwind and TS are fine: crufty-feeling but they enable me to write frontend code.
Java via Exercism!
Bit of a break at the mo due to travel, but when I next sit still for a few weeks the main thing will be deepening & broadening my wx GUI skills. Just starting to grasp managing sizer layouts a bit better - it’s really all about keeping things simple. Like everything, I guess.
I’ve been working through Crafting Interpreters super duper slowly for a while. After that I’ll start working on my own language for funsies.
I started about a week ago and already I know I will go very slow too. No problem, as long as it’s enjoyable. I don’t think I will create my own language, I am just interested in learning more about the subject. But who knows?
Good luck! I’m pretty much done with the tree-walk interpreter, and it was a ton of fun.
I am about to start my Bachelor thesis, about combating the Thompson Attack in the context of Go projects and the Go compiler. It makes me learn about bootstrappable builds, reproducible builds, and how easy it is to break those properties! It’s really fun and really scary! And I’m also learning about how the Go compiler works, which is really interesting software in my opinion: it’s very easy to bootstrap, very self contained when it comes to the software and libraries it needs, and since version 1.21 it’s reproducible, which makes it perfect for my thesis!
I suppose you are aware of https://dwheeler.com/trusting-trust/?
I am, indeed! Thanks for the link anyways :)
Reading about streaming systems.