-
10 votes
-
I am disappointed by dynamic typing
22 votes -
How to make Racket go (almost) as fast as C
2 votes -
How to write a blog post about how to monetize a blog
5 votes -
What programming/technical projects have you been working on?
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's...
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?
11 votes -
Advanced debugging technology in practice
4 votes -
Ladybird chooses Swift as its successor language to C++
I've copied the full tweet below (it's from August, I missed this news somehow): We've been evaluating a number of C++ successor languages for @ladybirdbrowser , and the one best suited to our...
I've copied the full tweet below (it's from August, I missed this news somehow):
We've been evaluating a number of C++ successor languages for @ladybirdbrowser , and the one best suited to our needs appears to be @SwiftLang 🪶
Over the last few months, I've asked a bunch of folks to pick some little part of our project and try rewriting it in the different languages we were evaluating. The feedback was very clear: everyone preferred Swift!
Why do we like Swift?
First off, Swift has both memory & data race safety (as of v6). It's also a modern language with solid ergonomics.
Something that matters to us a lot is OO. Web specs & browser internals tend to be highly object-oriented, and life is easier when you can model specs closely in your code. Swift has first-class OO support, in many ways even nicer than C++.
The Swift team is also investing heavily in C++ interop, which means there's a real path to incremental adoption, not just gigantic rewrites.
Strong ties to Apple?
Swift has historically been strongly tied to Apple and their platforms, but in the last year, there's been a push for "swiftlang" to become more independent. (It's now in a separate GitHub org, no longer in "apple", for example).
Support for non-Apple platforms is also improving, as is the support for other, LSP-based development environments.
What happens next?
We aren't able to start using it just yet, as the current release of Swift ships with a version of Clang that's too old to grok our existing C++ codebase. But when Swift 6 comes out of beta this fall, we will begin using it!
No language is perfect, and there are a lot of things here that we don't know yet. I'm not aware of anyone doing browser engine stuff in Swift before, so we'll probably end up with feedback for the Swift team as well.
I'm super excited about this! We must steer Ladybird towards memory safety, and the first step is selecting a successor language that we can begin adopting very soon. 🤓🐞
Nitter link:
https://nitter.poast.org/awesomekling/status/1822236888188498031
Original post:
https://x.com/awesomekling/status/1822236888188498031
Some of Kling's replies in that thread are also pretty interesting:
My general thoughts on Rust:
- Excellent for short-lived programs that transform input A to output B
- Clunky for long-lived programs that maintain large complex object graphs
- Really impressive ecosystem
- Toxic communityIn the end it came down to Swift vs Rust, and Swift is strictly better in OO support and C++ interop.
The September monthly report for Ladybird released the day after I posted this. It provides basically the same information:
This Month in Ladybird September 2024
The section about Swift:
Successor language search progress
Over the past year, our core contributors have been exploring potential safe languages to complement or succeed C++. We evaluated several options, including Rust, Swift, Fil-C, and others. While some languages offered compelling features, many fell short in either C++ interoperability or providing the level of memory safety we needed.
After extensive testing and discussion, Swift emerged as the top choice among our core developers, thanks to the new Swift 6 interoperability features and its growing cross-platform support. As a result, we’ve decided to adopt Swift as our C++ successor language.
That said, this will be an incremental shift. The existing C++ codebase is deeply embedded in the project, and a complete rewrite would be impractical. Instead, we’ll be gradually introducing new components in Swift, carefully integrating them with our existing C++ code over time. Look forward to a dedicated blog post on the topic soon.
32 votes -
Best way to voice call and screenshare with audio on Linux?
One thing I really enjoy is being able to share my screen with family and friends to watch movies together or share gameplay. On Windows, you can do this trivially with Discord. On Mac, you can do...
One thing I really enjoy is being able to share my screen with family and friends to watch movies together or share gameplay. On Windows, you can do this trivially with Discord. On Mac, you can do this on Discord if you install some software they recommend. On Linux, I believe it's impossible with Discord unless you use a third party front end, which I'd rather not do. Zoom has screenshare with sound, but I don't know what the Linux support is like, and it's capped at 40 minutes unless you pay.
Are there other messaging services that have voice call and audio screenshare support on Linux, no unofficial front end necessary, that's also available on Windows and Mac? It's ok if it requires some setup. Ideally it would be a group chat as opposed to streamed publicly on a site like Twitch.
11 votes -
Encrypted Root with LUKS and Opal
6 votes -
Curly-Cue: Geometric methods for highly coiled hair
12 votes -
Debugging by querying a database of all program state
4 votes -
Diffusion for World Modeling - CS:GO and other games rendered in real time using neural networks
7 votes -
Relative installed shady browser extension
[Possibly solved, please look at comments] Hey, so recently a family member accidentally downloaded a shady browser extension called: "Easy Print" on Firefox. 30k downloads, no ratings, weird...
[Possibly solved, please look at comments]
Hey,
so recently a family member accidentally downloaded a shady browser extension called: "Easy Print" on Firefox. 30k downloads, no ratings, weird "offical" website and installed accidentally trying to buy tickets. I assume it showed something along the lines of: "Buy ticket now" and they just clicked on it (being overall inexperieced with security). Only extension installed was uBlock until then.
I won't post a link just in case, but you can easily find it by googling: "Easy Print Firefox" or "Easy Print App" for their website.
What makes this weirder is that they change the default search engine to Yahoo, which for me was always a red flag for a hijacked browser.
I uninstalled it, but am concerned that they installed something like a keylogger along with it.
Can anyone help me what this is and, especially, how I can properly teach them the basics of internet safety? Not the first time their PC/browser was filled with unwanted stuff...
Thank you and best regards!
15 votes -
What programming/technical projects have you been working on?
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's...
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?
14 votes -
Get me out of data hell
30 votes -
What programming/technical projects have you been working on?
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's...
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?
14 votes -
Announcing the SDL 3.1.3 stable ABI preview!
6 votes -
What programming/technical projects have you been working on?
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's...
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?
12 votes -
Good retry, bad retry: an incident story
4 votes -
Getting my daily news from a dot matrix printer
6 votes -
Books or other good content on software design?
Wondering if anyone has any good books or other content to recommend on software design. I feel like when I start out on a new project I always get stuck in a rut of trying to design something...
Wondering if anyone has any good books or other content to recommend on software design. I feel like when I start out on a new project I always get stuck in a rut of trying to design something good, then end up with an awful design anyways. On the other hand, I've been around professors and more experienced software engineers who seem to effortlessly come up with simple, powerful architectures and interfaces.
While I know that reading a book or two won't get me the experience I need to improve, it does seem like that might be a good jump-start. Anyone have any suggestions for me? Thanks!
9 votes -
Reversing file access control using disk forensics on low-level flash memory
6 votes -
Building a robust frontend using progressive enhancement
9 votes -
Winamp releases source code, asks for help modernizing the player
46 votes -
BCD Watch automatically collects and makes available information about updates to Browser Compatibility Data
3 votes -
Frog Protocols announced to try and speed up Wayland protocol development
16 votes -
Viewport Tester — Test your website on 180+ device viewports
15 votes -
SpaceTraders — A unique multiplayer game built on a free Web API
62 votes -
Slowly booting full Linux on the intel 4004 for fun, art, and absolutely no profit
18 votes -
Things learned serving on the board of the Python Software Foundation
24 votes -
wordfreq will no longer be updated partly due to AI polluting the data
74 votes -
What programming/technical projects have you been working on?
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's...
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?
7 votes -
Share your personal dotfile treats and Unix tool recommendations
I am currently preparing for a new job and cleaning up my dotfile repository. During the process, I had the idea that it would be nice to create a list of amazing tools, aliases, functions, and...
I am currently preparing for a new job and cleaning up my dotfile repository. During the process, I had the idea that it would be nice to create a list of amazing tools, aliases, functions, and recommendations together.
I will start.
First, here is a list of nice tools to
apt-get install
orbrew install
that I can wholeheartedly recommend:nvim
is just an amazing text editor.fzf
is a very good fuzzy finder util. For example, you can quickly find files with it.eza
is a goodls
replacement (and the successor ofexa
).bat
is a great replacement forcat
with nice integrations and many options.stow
is great for managing your dotfiles. Thanks to @TangibleLight for telling me about it some while ago. I really love it.tmux
is a terminal multiplexer, i.e. you can have many sessions in one single terminal window. It's easy to use and super helpful. (When on a mac, I prefer iTerm tabs, though.)nvm
is practically a must if you are working with Node.glow
is an excellent markdown reader.tldr
is a niceman
replacement. (You must runtldr -u
after installing it to update available texts.)z
, an amazing tool for switching directories quickly.
Also, I can recommend Oh My ZSH! which I have been using for years.
Here is a small list of aliases I enjoy (I have 100+ aliases and I tried to pick some others may enjoy as well):
# Serve current dir alias serve="npx serve ." # What's my IP? alias ip="curl --silent --compressed --max-time 5 --url 'https://ipinfo.io/ip' && echo ''" # This should be the default alias mkdir="mkdir -p" # Nice git helpers alias amend="git add . && git commit --amend --no-edit" alias nuke="git clean -df && git reset --hard" # Make which more powerful which='(alias; declare -f) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot' # This saves so many keystrokes, honestly alias -- +x="chmod +x" # Turns your path into a nice list and prints it alias path='echo -e ${PATH//:/\\n}' # Map over arguments and run a command # Usage: map <command> # Example: ls | map cat alias map="xargs -n1"
And, finally, here are some fun functions:
# Get cheat sheets for almost anything! # https://github.com/chubin/cheat.sh cheat() { WITH_PLUS=$(echo $@ | sed 's/ /+/g') CAT_TOOL=$(command -v batcat || command -v bat || command -v cat) curl "cheat.sh/$WITH_PLUS" | $CAT_TOOL } # Send everything to /dev/null nullify() { "$@" >/dev/null 2>&1 } # Create a new dir and enter it mk() { mkdir -p "$@" && cd "$_" } # Create a data URL from a file # Source: https://github.com/mathiasbynens/dotfiles/blob/master/.functions data-url() { local mimeType=$(file -b --mime-type "$1"); if [[ $mimeType == text/* ]]; then mimeType="${mimeType};charset=utf-8"; fi echo "data:${mimeType};base64,$(openssl base64 -in "$1" | tr -d '\n')"; }
74 votes -
Blogging in Djot instead of Markdown
14 votes -
Valkey 8 sets a new bar for open-source in-memory NoSQL data storage
12 votes -
Performance Improvements in .NET 9
15 votes -
An amusing story about a practical use of the null garbage collector
7 votes -
What programming/technical projects have you been working on?
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's...
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?
10 votes -
Haiku beta 5 release notes
18 votes -
Retrospective on the introduction of the Vanguard anti-cheat software to League of Legends
16 votes -
Reverse-Proxying services both inside and outside of Podman
Hey all, not-a-networks-guy here. I've currently got an rpi set up running pihole natively (not in a container) for ad and website blocking reasons. (Using port 80, no TLS) I've used the pihole...
Hey all, not-a-networks-guy here.
I've currently got an rpi set up running pihole natively (not in a container) for ad and website blocking reasons. (Using port 80, no TLS) I've used the pihole localdns feature to set an internal hostname for that ip (
me.lan
).On the same pi, I have podman "set up" to run FreshRSS, and I'm getting more and more annoyed about using the port # to access it. (
me.lan:12345
) I'd like to set up a reverse proxy (probably Traefik) in a container to redirect internally, but considering that port 80 is taken (by pihole, outside of podman) I don't see a way to direct traffic from the pihole to Traefik.I'd really rather not reconfigure the whole setup to use containers.... I'm lazy, and also prefer my dns resolver to have the least amount of overhead possible. Is configuring the router an option here, or is the only way to achieve what I'm looking for an overhaul of the pi and containers?
If I've missed any pertinent details, let me know and I'll update here.
4 votes -
best way to go about with a script that seems to need both bash and python functionality
Gonna try and put this into words. I am pretty familiar with bash and python. used both quite a bit and feel more or less comfortable with them. My issue is I often do a thing where if I want to...
Gonna try and put this into words.
I am pretty familiar with bash and python. used both quite a bit and feel more or less comfortable with them.
My issue is I often do a thing where if I want to accomplish a task that is maybe a bit complex, I feel like I have to wind up making a script, let's call it
hello_word.sh
but then I also make a script called.hello_world.py
and basically what I do is almost the first line of the bash script, I call the python script like
./hello_world.py $@
and take advtange of theargparse
library in python to determine what the user wants to do amongst other tasks that are easier to do in python like for loops and etc.I try to do the meat of the logic in the python scripts before I write to an
.env
file from it and then in the bash script, I will doset -o allexport source "${DIR}"/"${ENV_FILE}" set +o allexport
and then use the variable from that env file to do the rest of the logic in bash.
why do I do anything in bash?
cause I very much prefer being able to see a terminal command being executed in real-time and see what it does and be able to
Ctrl+c
if I see the command go awry.in python, you can run a command with
subprocess
or other similar system libraries but you can't get the output in real-time or terminate a command preemptively and I really hate that. you have to wait for the command to end to see what happened.But I feel like there is something obvious I am missing (like maybe bash has an argparse library I don't know about and there is some way to inject the concept of types into it) or if there is another language entirely that fits my needs?
6 votes -
Seek and you shall find — A list of recent updates that make Ready Player a better media player and manager for Emacs
6 votes -
Types and other techniques as an accessibility tool for the ADHD brain - Michael Newton
20 votes -
Radicle 1.0 — An open source, peer-to-peer code collaboration stack built on Git
6 votes -
What programming/technical projects have you been working on?
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's...
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?
11 votes -
Oscilloscope Music - Intersect
4 votes -
The Modern CLI Renaissance
47 votes -
The moral implications of being a moderately successful computer scientist and a woman
27 votes -
Asynchronous IO: the next billion-dollar mistake?
15 votes