August 14, 2023

What’s a Rich Text element?

The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.

Static and dynamic content editing

A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila!

How to customize formatting for each rich text

Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.

Chronicles

Sultan Alsawaf, of XDA fame, on kernel hacking, capacitive fingerprint sensors, and startup work

Many in the Android enthusiast space recognize the name Sultanxda for its associated kernels and ROMs, but there’s an actual human being on the other end of it, too. OSOM is exceptionally lucky to have Sultan Alsawaf as part of our software team, where he gets to work on all sorts of interesting things — only some of which we can talk about here. But, as the subject of our latest Employee Spotlight, he’s happy to share what he can. 

Great to chat with you, Sultan. You were and are such an influential voice in the Android development community. Your formal title is “Principal System Software Engineer,” but we have a lot more fun names for the work you do internally — King of Rice, among others.

You’re most well known for your kernel work, publishing optimized versions of Android device kernels at places like XDA with benefits like improved battery life and performance. And before you came to OSOM, I know you did kernel work for some other companies. 

Yeah, pretty much. I’ve done a lot of work outside the kernel, too. Here at OSOM, I do a lot of odd jobs — anything that relates to systems or C programming. When we need someone to do something, and we have no idea how it works, someone asks, “Okay, Sultan, can you do it?” And I’m like, “I’ll try my best!”

The startup life.

It was not well-known here when I was hired that I am primarily a kernel developer. I worked on Seed Vault for a year because it was the task at hand, but more recently, opportunities for kernel hacking have arisen. 

I know you’re still doing a lot of kernel work on the side for fun — I sent you a few devices for that. What devices are you developing now outside the hardware we make here at OSOM?

I still do lots of kernel work for fun; I always have and always will. Other than our own phones, these days, I like to develop for Pixel devices because Google does a lot of the work for you. I would rather make changes to the kernel that interest me than play a game of cleanup for an OEM that hasn’t done a great job or hasn’t implemented everything I want. I used to do ROMs too, and it took a lot of effort to make them work well, fixing bugs the OEM had in their proprietary stuff, all to just make my phone work well. That’s not what I want to spend my limited free time on. Pixels are better for me time-wise, so I can focus on the parts of the kernel that interest me. 

So what sort of Kernel work did you do before working here at OSOM? You were at Canonical, for example. 

That was a lot of kernel maintenance stuff, and that’s in a different line than development. It’s like doing oil changes for cars vs. rebuilding an engine. I was doing the equivalent of kernel oil changes at Canonical. But my most recent job was the most kernel-heavy. 

I was doing some of the most sophisticated kernel work I’d ever done. It was all about making things work in the kernel in ways they were never designed to work. Have you heard of eBPF?

The Linux kernel, traditionally, doesn’t let you insert random code into the kernel while it is running, unless you’ve already made code for that specific kernel in advance (by way of a kernel module). But what if you want someone to just insert their code and run it from inside the kernel itself, on the fly, and customize it however they want? That’s what eBPF lets you do. The gist of it is that the kernel can compile and run a program, like an emulator or virtual machine inside the kernel. 

Its very first application comes from its very name: Extended Berkeley Packet Filter. Initially, developers used it for networking stuff: custom code that could run very fast for things like DDoS mitigation.

Our goal with eBPF was to make it run more complex programs than it would normally allow. And that’s hard to do well, as the kernel is a very privileged place in a computer. You can’t let just anyone throw code into the kernel to do whatever they want; they could easily break things or steal data. The kernel has a very strict way of making sure an eBPF program doesn’t have anything nasty in it, and it really limits eBPF's potential. At my last job, we got rid of that. [Laughs.] We made it so you could write infinitely complex eBPF programs, and my job was to find a modular way to make our modified version of eBPF portable so you could slap it onto any Linux kernel and use our enhancements.

It was super complex. That involved tons of dark magic and arcane tricks — code that self-links itself when it runs. Linux was definitely not designed to do this by a long shot. But making things do things they aren’t designed to do is a recurring theme for me. 

This sounds like some of the black magic work you’ve done here at OSOM that can’t be discussed! I remember you trying to break a laptop speed record at the last software team meetup, and the lead developer of Geekbench was even pretty impressed. 

“Trying?” I’m pretty sure we did! And that’s actually pretty easy. So, most PC BIOSes only have a few user-facing settings, but that’s a lie, and there are a ton of settings you can change that aren’t visible because whole parts of the reference BIOS code Intel provides to manufacturers are hidden. Most of the time, those options are still there, so it’s easy to adjust things like maximum power limits and “let ‘er rip.” Heck yeah. 

So what sort of stuff are you working on at OSOM right now? 

There are some projects we can’t discuss, but outside of those, there’s no one project I’m spending most of my time on. Some ongoing software updates and maintenance for Saga, adjusting random things, and one-off bug fixes. Despite being a Linux kernel expert, none of my work so far really touched on it. I'd been doing Seed Vault, security, and C programming, but kernel work hadn’t come up much!

A bit of a loaded question given your history here, but what is your favorite thing you’ve worked on here at OSOM? What was the most fun thing to do?

I thought writing a display renderer for Seed Vault was pretty fun. The original implementation wasn’t very fast or smooth, so I wrote my own display renderer from scratch. That meant learning a lot of display rendering pipeline logic and tricks for making it nicer, implementing triple buffering and V-sync. It was very fun work. I was able to get 120FPS with all the CPU cores running at their lowest possible speed. Maximum rice. 

I ask everyone this: What’s your favorite feature on Saga?

The fingerprint reader. Why the fingerprint reader? Because it’s a capacitive fingerprint reader, and these days, every phone you can find that costs over $200 has an under-display fingerprint reader that’s made using some crappy camera and some nighttime-blinding tricks with the OLED display, all resulting in a slower, less reliable fingerprint scanning experience. Whereas we are fast, consistent, don’t blind you at night, and don’t need a ton of weird software hacks to work right, all while being way more secure. 

One last question. If you could work on anything in the future, what would it be? What project do you most want to be involved in someday?

There are multiple different things that I’d have a lot of interest in working on, so it’s hard to give a specific answer. I wanted to work on a fingerprint reader, and I did, and a display renderer — did that. Even my Wi-Fi access point at home, I make builds of OpenWRT for it. My interests are widespread, but there are certain things you can’t get access to unless you work at the companies that make them. And that would definitely be CPUs. I’d love to have more insight into all the secret sauce there. 

From a higher-level product perspective, I’m relatively boring. All of the types of products that I work on right now are satisfying; I just want them to work better! I don’t do exciting things with my phone other than scrolling around to enjoy smooth animations. I’m not a demanding user, but I get immediately upset when I see frames dropped somewhere — anywhere. I want everything to be the way it is but better. Really, I’d love to be greedy and have a role in the whole product design process, part selection, and pick everything that I’d want it to look like and act like — and then also rice the hell out of it. 

Of all the places you can do that, OSOM is it. Always admired your kernel and ROM work, Sultan. Great chatting with you!

And, for the record, my favorite rice is calrose.