401
 
 

Typst is a new markup-based typesetting system that is designed to be as powerful as LaTeX while being much easier to learn and use. ^[1.1]^

References

  1. Type: Webpage. Title: "typst/typst". Publisher: "GitHub". Published (Modified): 2026-03-16T09:39:55.000Z. Accessed: 2025-03-18T08:55Z. URI: https://github.com/typst/typst.
    1. Type: File. Title: "README.md".
      • Type: Text. Location: ¶1.
402
 
 

I created the signal protocol for a related project. The implementation is in rust and compiles to WASM for browser-based usage.

Im not sure when its a good time to share it, but i think its reasonable now.

The aim is for it to align with the official implementation (https://github.com/signalapp/libsignal). That version was not used because my use case required client side browser-based functionality and i struggled to achieve that in the official one where javascript is used but is targeting nodejs.

There are other nuances to my approach like using module federation, which led to me moving away from the official version.

The implementation is now moving past the MVP stage. It is integrated into a p2p messaging app. See it in action from the link on my profile.

While i have made attempts to create things like audits and formal-proofs, it isnt enough. I hope by sharing it, it can serve as a starting point for feedback about the implementation and highlight outstanding issues i may be overlooking. Its open source so you can take a look, but i completely understand it isnt worth your free time. Feel free to reach out for clarity on any details.

Ultimately id like to gear it up towards getting a professional third-party audit. If a free audit isnt going to happen, its prohibitively expensive... Users ask me questions about how my app works. In particular, people often ask about the protocol when it comes to cryptography. I'll have to share references to the AI audit, which id like to avoid.

403
 
 

FFmpeg 8.1 has been released today as a minor update to this open-source multimedia framework that introduces new decoders, encoders, filters, as well as various improvements.

Coming almost seven months after FFmpeg 8.0, the FFmpeg 8.1 release introduces D3D12 H.264 and AV1 encoding, support for parsing and forwarding metadata for LCEVC, and an experimental xHE-AAC Mps212 MPEG-H decoder via the libmpeghdec library.

FFmpeg 8.1 also introduces EXIF metadata parsing support, Vulkan-based ProRes encoding and decoding, and DPX decoding, Rockchip H.264/HEVC hardware encoding, an HXVS demuxer for HXVS/HXVT IP camera format, as well as projection mode Ambisonic Audio Elements muxing and demuxing.

404
 
 

Today, the Blender Foundation released Blender 5.1 as a major update of this powerful, free, open-source, and cross-platform 3D graphics software for GNU/Linux, macOS, and Windows.

Highlights of Blender 5.1 include hardware ray-tracing enablement for AMD GPUs by default through HIP RT, improved GPU rendering performance by up to 10 percent on various benchmark scenes, and a new F-Curve modifier called “Gaussian Smooth” that allows non-destructive smoothing of F-Curves.

For Linux users, Blender 5.1 adds support for opening windows without decorations on Wayland by using the–no-window-frame argument, removing the dependence on the libdecor client-side decorations library for Wayland clients. Also, Blender now uses TBB_MALLOC_PROXY for memory allocation on Linux

405
 
 

Over the past few months, our former payment provider Nexi S.p.A. (“Nexi”) requested access to private data, which we understood to be specifically the usernames and passwords of our supporters. We have refused this request. All our attempts to clarify Nexi’s request, or to understand how their need for such information was necessary and legal, were met with what we consider to be vague and unsatisfactory explanations relating to a general need for risk analysis.

Subsequently, we found ourselves unable to receive credit card donations through Nexi’s system. In the afternoon of 10 March, we were further informed that our contract had been cancelled a few days prior on 7 March, due to our supposed failure to meet their deadline to fulfil their request. This deadline was not communicated to us beforehand, despite us having been Nexi’s customer for the past 15 years.

This is completely crazy! As 450 supporters are affected, that is a huge amount of donations that were cut off!

406
 
 

Now you don't have to sideload an .xpi, they've approved it. i'll release an update with a few more bugfixes and better implementation of some stuff this week but it's in a pretty much usable state right now, if you have any suggestions please let me know!

Dev @gary_host_laptop@lemmy.ml

407
408
409
410
411
412
 
 

A new open-source tool called Betterleaks can scan directories, files, and git repositories and identify valid secrets using default or customized rules.

413
414
415
416
submitted 4 months ago* (last edited 4 months ago) by to c/opensource@programming.dev
 
 

We’re happy to present the first release of GIMP 3.2!

This marks a year of design, development, and testing from volunteers and our community.*

Here are some of the many highlights to look out for:

Link Layers

You can now use Link Layers to incorporate external image as part of your compositions, easily scaling, rotating, and transforming them without losing quality or sharpness. It functions similar to the “Linked Smart Object” concept from Photoshop. The Link Layer will automatically update if the external image is changed in another editor – for example, if you include a SVG logo as a Link Layer in GIMP, you can edit it in Inkscape and see the changes live in GIMP as well!

You can create a new Link Layer by choosing Open as Link Layer... in the File menu. You can change the image used at any time in the Layer Attributes dialog, which you can access by double-clicking the layer in the dock or by choosing Edit Layer Attributes... from the layer menu.

Vector Layers

The Path tool can now create Vector Layers, which lets you draw shapes with adjustable fill and stroke settings. The shape of the vector layer also automatically updates whenever you adjust the path, and you can non-destructively rotate, scale, and transform it too

PaintBrush improvements

The MyPaint Brush tool has been upgraded, adding 20 new brushes, including a much-requested arrow brush. It now automatically adjusts to your canvas zoom and rotation for more dynamic painting.

Better Text Editor

Our Text Editor has been the focus of several development projects to improve its usability and functionality. You can now drag the on-canvas text editor to move it out of the way when writing text. Several common shortcuts are now supported (such as Ctrl + B for bold, Ctrl + I for italics, and Shift + Ctrl + V for pasting unformatted text).

Non-Destructive Filter Updates

As well as working on new non-destructive layers (vector layers, link layers, and text layers), we’ve also been working on the non-destructive filters! You can now apply filters to channels non-destructively, in addition to layers and layer groups.

Overwrite Mode

A new Overwrite paint mode allows you to draw over existing colors without blending their transparency. It has many useful applications when working with pixel art

UX/UI improvements

This release includes a TON of small user interface and user experience improvements

New System color scheme

There is a new System color scheme for Default themes. If set, it will automatically update GIMP’s theme colors to match the current OS settings.

Automatic transparency

The Crop Tool and NDE filters now automatically add transparency to a layer when necessary, rather than requiring you to remember to do it manually.

Switch between tools easily

You can now quickly switch back and forth between your two most recent tools with the Shift + X shortcut

Welcome Dialog improvements

The Welcome Dialog has received improvements to help streamline user workflows.

It now recognizes the Ctrl + 0, 1, 2… 9 shortcuts for opening the most recent images.

It now recognizes your shortcuts to create a new image, or open an existing one (whether the respective default Ctrl + N or Ctrl + O, or your custom shortcuts)

It no longer appears if you intentionally open GIMP with an image

Flip images with your keyboard

The Flip and Shear Tools now respond to the arrow keys, similar to the Move and Rotate Tools.

Flip Tool: You can use the Left and Right arrows to flip the image horizontally, and the Up and Down arrows to flip it vertically.

Shear Tool: You can use the Left and Right arrows to shear your image horizontally, and the Up and Down arrows to do the same vertically. Like the Move tool, you can hold down Shift to shear with a larger value.

For Script and Plug-in Developers

GIMP 3.0 brought non-destructive filters and a new GimpDrawableFilter API for script developers to create them. However, it was not always easy to find the names and properties for the extensive list of potential filters, especially for third-party GEGL filters.

A new GEGL Filter browser has been added to make it easier to find non-destructive filters to use.

New formats

GIMP 3.2 includes built-in support for even more file formats! These range from well-known formats like APNGs to obsolete archival formats such as Seattle FilmWorks photos, supporting your quest of old data retrieval. For retro game developers, we now support Sony PlayStation TIM and Sega Dreamcast PVR textures.

We also added export support for JPEG 2000 images, which is the standard for the digital cinema industry. This now matches our import support, which we’ve had since GIMP 2.8

In addition to our existing darktable and RawTherapee plug-ins, we’ve added support for using ART for editing Camera RAW images.

As a side effect of adding support for NASA‘s .hgt.zip image format, GIMP can now load compressed images from any format that we currently support.

Total Ink Coverage value

You can now see the Total Ink Coverage value for a color in the CMYK Color Selector. This is useful to know when soft-proofing your image for printing, as your printer may have an ink coverage limit to prevent over-saturation of the page.

https://www.gimp.org/release-notes/gimp-3.2.html#usability-improvements

This release is a GAME CHANGER!! Nothing will ever be the same. Adobe just got punched right in the face.

You can support Gimp

Thank you SO MUCH to developers, designers, translators, testers, donors and all members of our community 👏🏼👏🏼.

417
 
 

1W5yyEvd7kMTZsl.png

Preface: I know MediaWiki isn't part of the Fediverse, but the community is intended to be two parts (MediaWiki/nodeBB forums) and the forums will be federated. I could not find any active communities within the fediverse related to MediaWiki or wikis in general, so I figured this community might suffice, since ultimately this community as a whole will be federated through the forum.

Hello everyone, I have started on the journey to set up a community that focuses on open-licensed projects (open source/creative commons) where members can collaborate and network to help get their projects while contributing to a library of openly licensed projects.

The community is two parts: a MediaWiki & a nodeBB forum.
The idea is to have the wiki act as a hub to build/document open source projects, where individuals can contribute and help each other out in small ways, without necessarily needing to commit to a long term project - the community can work together to make small contributions to many projects to help the collective, rather then requiring individuals to formally commit to one or two projects long term. The forum is there to help people more easily communicate and network, and compliment the wiki as a collaboration platform/community building.


This project quickly got over my head, as it started out as an idea to create a forum to try and build a community for building up my open source projects. But the idea expanded and is now evolving to it's current state. I am figuring things out as I go, and have managed to get things mostly ready, but I have largely relied on LLMs and forums to get me this far. I am not experienced in wiki's or moderating a forum. I have found 2 other people who were interested in the project, so there are currently 3 of us that have been working to get this community platform up and running - but none of us are experienced in administrating MediaWiki or its settings.


The request:
I am hoping to find at least one "MediaWiki power-user" who can ensure we are following best practices, not opening ourselves up to vulnerabilities, etc. If someone who is potentially passionate in what we are trying to create, we would love to add another member (or a few) to our team to help ensure we are prepared to launch the community successfully.

In addition to setting up the community, it would obviously be nice you would also be interested in helping us moderate and maintain our community as we evolve.

I don't have any expectations for commitments, as this is simply a hobby project - whatever & whenever you can help.


Note: this endeavor is purely a hobby project, and I am just one person who is trying to find a few others who want to help contribute - this is by no means a business or intended as a source of revenue.

The wiki has registration closed at the moment, since we are still setting things up (be advised, some of the content may be broken or placeholder text), but if you want to check out more about our project to see if its something you are interested in: https://unfinishedprojects.net/

I hope someone might be interested :) . . . and if not, I am always open to simple feedback or suggestions if you have any, but don't have the time to actually help with the project.


If you are interested, please don't hesitate to reach out, and I'd be happy to discuss it further and details about joining the team. I obviously want to be careful about who I hand out permissions to, but overall, I believe that the more people and experience we have, the better; as long as you're a team player and want what is best for the project :D

418
419
 
 

good, good

edit: apparently it's satire, that's what I get for posting pre-covfefe

420
 
 

JADEx (Java Advanced Development Extension) is a safety layer that makes Java safer by adding Null-Safety and Final-by-Default semantics without modifying the JVM.


Null-Safety

NullPointerException (NPE) is one of the most common sources of runtime failures in Java applications.
Although modern Java provides tools such as Optional and static analysis, null-related bugs are still fundamentally a runtime problem in most Java codebases.

JADEx addresses this problem by introducing explicit nullability into the type system and enforcing safe access rules at compile time.

In JADEx:

  • Typenon-nullable by default
  • Type?nullable
  • ?.null-safe access operator
  • ?:Elvis operator (fallback value)

This design ensures that developers must explicitly acknowledge and handle nullable values before accessing them.

For example:

String? name = repository.findName(id);
String upper = name?.toLowerCase() ?: "UNKNOWN";

When compiled by JADEx, this code is translated into standard Java:

JADEx compiles null-safe expressions into standard Java using a small helper API(SafeAccess).

@Nullable String name = repository.findName(id);
String upper = SafeAccess.ofNullable(name).map(t0 -> t0.toLowerCase()).orElseGet(() -> "UNKNOWN");

In this example:

name is explicitly declared as nullable.

The ?. operator safely accesses toLowerCase() only if name is not null.

The ?: operator provides a fallback value if the result is null.

Instead of writing repetitive null-check logic such as:

if (name != null) {
    upper = name.toLowerCase();
} else {
    upper = "UNKNOWN";
}

JADEx allows the same logic to be expressed safely and concisely.

Most importantly, JADEx prevents unsafe operations at compile time. If a nullable variable is accessed without using the null-safe operator, the compiler will report an error.

This approach shifts null-related problems from runtime failures to compile-time feedback, helping developers detect issues earlier and build more reliable software.


Readonly (Final-by-Default)

JADEx also introduces optional readonly semantics through a final-by-default model.

In large Java codebases, accidental reassignment of variables or fields can lead to subtle bugs and make code harder to reason about. While Java provides the final keyword, it must be manually applied everywhere, which often results in inconsistent usage.

JADEx simplifies this by allowing developers to enable readonly mode with a single directive:

apply readonly;

Once enabled:

  • Fields, local variables, and parameters become final by default

  • JADEx automatically applies final where appropriate

  • Reassignment attempts are reported as compile-time errors

Example:

apply readonly;  
  
public class Example {  
    private int count = 0;  
  
    public static void main(String[] args) {  
        var example = new Example();  
        example.count = 10; // compile-time error  
    }  
}

Since count is generated as final, the reassignment results in a standard Java compile-time error.

If mutability is intentionally required, developers can explicitly opt in using the mutable modifier:

private mutable int counter = 0;

This approach encourages safer programming practices while keeping the code flexible when mutation is necessary.

When compiled, JADEx generates standard Java code with final modifiers applied where appropriate, ensuring full compatibility with the existing Java ecosystem.

//apply readonly;

@NullMarked
public class Example {
    private final int count = 0;

    public static void main(final String[] args) {
        final var example = new Example();
        example.count = 10; // compile-time error
    }
}

Summary

JADEx introduces two complementary safety mechanisms:

Null-Safety

  • Non-null by default

  • Explicit nullable types

  • Safe access operators (?., ?:)

  • Compile-time detection of unsafe null usage

Readonly (Final-by-Default)

  • Final by default

  • Explicit opt-in for mutability

  • Automatic final generation

  • Prevention of accidental reassignment

Together, these features strengthen Java’s type system while remaining fully compatible with existing Java libraries, tools, and workflows.

JADEx does not replace Java.
It simply adds a safety layer that makes Java safer while keeping full compatibility with the existing ecosystem.

421
 
 

Phased-array radars are great for all sorts of things, whether you’re doing advanced radio research or piloting a fifth-generation combat aircraft. They’re also typically very expensive. [Nawfal] hopes to make the technology more affordable with an open-source radar design of their own.

422
 
 

If you want to do livestreaming or video recording on Linux, OBS Studio is easily the best free and open source app you can get for it and v32.1.0 is out now

423
 
 

There's a bit of drama going on with the popular game manager Lutris right now, with users pointing out the developer using AI generated code via Anthropic's Claude.

Seems like something relevant to talk about, with AI tools being a huge cause of problems in the hardware industry. Like how the Steam Deck is constantly sold out and Valve can't even give us a price or release date of their upcoming hardware. All because these AI companies are sucking up all component manufacturing for their data centres. Every extra person using all these AI tools is only adding to the issue.

A user asked on the official Lutris GitHub two weeks ago "is lutris slop now" and noted an increasing amount of "LLM generated commits". To which the Lutris creator replied:

It's only slop if you don't know what you're doing and/or are using low quality tools. But I have over 30 years of programming experience and use the best tool currently available. It was tremendously helpful in helping me catch up with everything I wasn't able to do last year because of health issues / depression.

There are massive issues with AI tech, but those are caused by our current capitalist culture, not the tools themselves. In many ways, it couldn't have been implemented in a worse way but it was AI that bought all the RAM, it was OpenAI. It was not AI that stole copyrighted content, it was Facebook. It wasn't AI that laid off thousands of employees, it's deluded executives who don't understand that this tool is an augmentation, not a replacement for humans.

I'm not a big fan of having to pay a monthly sub to Anthropic, I don't like depending on cloud services. But a few months ago (and I was pretty much at my lowest back then, barely able to do anything), I realized that this stuff was starting to do a competent job and was very valuable. And at least I'm not paying Google, Facebook, OpenAI or some company that cooperates with the US army.

Anyway, I was suspecting that this "issue" might come up so I've removed the Claude co-authorship from the commits a few days ago. So good luck figuring out what's generated and what is not. Whether or not I use Claude is not going to change society, this requires changes at a deeper level, and we all know that nothing is going to improve with the current US administration.

424
 
 

I can't believe I've had an original idea in wanting a face system monitor. The face would change, skin color, eye size, ear flapping, mouth screaming, whatever, and the user could configure it how they wanted. Then I could get a quick system overview just by looking at the face in the corner of my screen. I'd code it up myself, but for 2 reasons. I think I'd tire of it quickly, as badly as I want to see it. I don't even know where to start with coding anything more than some bash scripting.

425
 
 

Lutris maintainer use AI generated code for some time now. The maintainer also removed the co-authorship of Claude, so no one knows which code was generated by AI.

Anyway, I was suspecting that this "issue" might come up so I've removed the Claude co-authorship from the commits a few days ago. So good luck figuring out what's generated and what is not.

sauce 1

sauce 2

view more: ‹ prev next ›