This post was originally posted on the LogRocket blog on 11.04.2025 and was cross-posted here by the author. Progressive web apps (PWAs) combine the advantages of web applications with the comfort of native apps, which can run locally and offline. Over the last few years, support for PWAs, in terms of available features, has increased. PWAs have become an attractive alternative to investing the…
This post was originally posted on the LogRocket blog on 21.10.2024 and was cross-posted here by the author. In this article, we’ll take a look at how to use Rust and the popular Polars high-performance DataFrame library to build a basic data analysis application, which exposes data sets and querying capabilities via a REST-based Web API. We’re also going to build a simple backend web application,…
This post was originally posted on the LogRocket blog on 21.08.2024 and was cross-posted here by the author. Ever since the rise of Electron, which lead to a bit of a renaissance of cross-platform desktop applications using web-technology, the limitations of this approach became apparent. Slow start-up times, very high resource usage, and simply the limits of web-technology to build high-fidelity…
This post was originally posted on the LogRocket blog on 28.05.2024 and was cross-posted here by the author. Understanding how to work directly with the new WebGPU standard requires more knowledge than higher-level graphics libraries that abstract complex development concepts for easier usage. However, this knowledge also comes with benefits like a higher level of control, better cross-platform…
Generative AI has been all the rage for some time and it seems like this latest entry to the industry’s hype cycle will stay with us for the foreseeable future. Between that and the fact that I was looking for an interesting example for a coding dojo at work, I thought it would be interesting to build something that leverages one of the open source LLMs in Rust. This post basically describes the…
This post was originally posted on the LogRocket blog on 23.02.2024 and was cross-posted here by the author. CRDTs, or conflict-free replicated data types , is a concept that underlies applications facing the issue of data replication across a network. These applications involve multiple actors writing and reading the data, potentially at the same time. The goal of CRDTs is to make sure that the…
In this post, we’re going to look at how to use the wonderful Cap’n Proto serialization system in Rust. I’ve been wanting to check out Cap’n Proto for a while now, since it has some very cool features and posts some impressive performance numbers. The little example shown in this article is a nice way to scratch the surface. For this purpose, we’re going to build a short example application, which…
This post was originally posted on the LogRocket blog on 26.05.2023 and was cross-posted here by the author. In this article, we’ll build a simple, full-stack TypeScript app using tRPC , which means that the app will not only be type-safe when it comes to the code, but also across the API boundary. You may already be familiar with the remote procedure call framework gRPC . Given the similarity in…
This post was originally posted on the LogRocket blog on 24.05.2023 and was cross-posted here by the author. In a previous post , we covered how to migrate an existing webpack project from Babel to Speedy Web Compiler (SWC) . SWC is a high-performance JavaScript/TypeScript compiler written in Rust, with the goal of speeding up existing build pipelines for modern frontend web projects. In this…
This post was originally posted on the LogRocket blog on 25.04.2023 and was cross-posted here by the author. In a previous post, we covered creating an async CRUD web service in Rust using warp . However, another cool thing about warp is that it supports WebSockets . This tutorial will demonstrate how to build a basic message relay service in Rust that clients can connect to via WebSockets. After…
This post was originally posted on the LogRocket blog on 24.04.2023 and was cross-posted here by the author. In a previous post on this blog, we covered how to create a Rust web service using Actix and Diesel . This time around, we’ll create a lightweight, fully asynchronous web service using the warp web framework and tokio-postgres . Let’s get started. What is warp? Warp is a lightweight…
This post was originally posted on the LogRocket blog on 07.12.2022 and was cross-posted here by the author. In this article, we’re going to look at the Crossbeam crate, which provides tools for concurrent programming in Rust. The library is widely used under the hood in the Rust ecosystem by many libraries and frameworks, provided concurrent programming is within their domain. This fantastic blog…
This post was originally posted on the LogRocket blog on 21.07.2022 and was cross-posted here by the author. According to the 2021 Rust Survey , Rust’s long compile time is still a big concern and an area for further improvement. Especially when it comes to large projects or crates with many dependencies, Rust’s focus on run-time performance vs. compile-time performance becomes rather punishing,…
This post was originally posted on the LogRocket blog on 20.07.2022 and was cross-posted here by the author. Depending on your programming background before encountering Rust, you might have been surprised by the fact that Rust has more than one type for strings, namely String and str . In this post, we will look at the difference between String and str , or more specifically, between String /…
This post was originally posted on the LogRocket blog on 27.05.2022 and was cross-posted here by the author. If you’re like me, you’re a fan of Rust and love to work with lean, mean tools tailored exactly to your needs. That’s why I’ve been using Vim as my main editor for Rust since the very beginning. At first, the support and tool stability of Vim were not quite there. However, over the last…
This post was originally posted on the LogRocket blog on 31.05.2022 and was cross-posted here by the author. We covered how to build a custom Blockchain implementation using the Substrate framework in Rust . However, in this article, we looked only at the backend part of the application, using the default Substrate frontend template to interact with the blockchain, calling functions and inspecting…
This post was originally posted on the LogRocket blog on 14.02.2022 and was cross-posted here by the author. In a previous article, we explored the core concepts behind the Substrate blockchain framework. In this tutorial, we’ll actually get our hands dirty and implement a very basic custom blockchain application in Rust using Substrate. It’s not strictly necessary to have read the introductory…
Ever since I started studying philosophy during my sabbatical last year, writing has been one of the skills I wanted to improve on outside of university, since it’s a core skill within academia, but also highly useful across just about any other area. I’m not very confident in my writing skills both in German and English, even though I’ve been writing for this blog for several years and also did…
This post was originally posted on the LogRocket blog on 31.12.2021 and was cross-posted here by the author. In a previous article, we took a look at how to implement a basic blockchain application in Rust . This blockchain app featured an absolute minimal subset of functionality and was far from usable in production. However, it was a good exercise to explore how to implement core blockchain…
This post was originally posted on the LogRocket blog on 25.11.2021 and was cross-posted here by the author. In a previous article , we covered how to build a very basic, working (albeit rather inefficient) peer-to-peer application in Rust. When we think about P2P technology and what it’s used for nowadays, it’s impossible not to immediately think of blockchain technology. Few topics in IT have…
In a previous post , I described my journey of focusing more on data privacy and switching away from some of the mainstream services, which are a privacy nightmare, towards more privacy-focused solutions. But first, let’s explore what I mean with “privacy nightmare” and why I’m happy to invest time and money to search for, test and use alternatives to mainstream services. What does privacy even…
This post was originally posted on the LogRocket blog on 12.10.2021 and was cross-posted here by the author. Previously, we looked at how to create a basic Wasm-based frontend application in Rust using the Yew web framework web framework. In this tutorial, we’ll show you how to do a similar thing with the Iced.rs GUI library. To show Iced.rs in action, we’ll build a very basic frontend application…
This post was originally posted on the LogRocket blog on 09.09.2021 and was cross-posted here by the author. Previously on this blog, we covered how to create a CRUD web service with Rust using warp and how to build a frontend web app with Rust using Yew . In this tutorial, we’ll put it all together and build a simple full stack web application, featuring a database-backed REST backend and a…
This post was originally posted on the LogRocket blog on 15.06.2021 and was cross-posted here by the author. While Rust is known for its backend web development capabilities, the advent of WebAssembly (Wasm) made it possible to build rich frontend apps in Rust. For those hankering to explore the frontend of Rust development, we’ll learn how to build a very basic frontend web app using the Yew web…
This post was originally posted on the LogRocket blog on 30.04.2021 and was cross-posted here by the author. Machine learning is such an interesting topic. When it comes to machine learning in Rust, I’ve dipped my toes in before and the topic continues to fascinate me. Whenever I’m learning a new programming language, after a while, I’ll ask myself, “Can I do machine learning with this?” Of…
This post was originally posted on the LogRocket blog on 23.04.2021 and was cross-posted here by the author. In this article, we’re going to have a look at some techniques to analyze and improve the performance of Rust web applications. The field of performance optimization in Rust is vast, and this tutorial can only hope to scratch the surface. For a great overview of the tooling and technique…
Time for another CTF write up. I very much enjoyed this one, which I did in collaboration with a colleague during a company knowledge sharing session. Let’s take a look at the VulnNet: Node CTF on TryHackMe. VulnNet The first step was enumeration with nmap , which revealed a web application running on port 8080. This web app, based on the info by nmap, runs Node.js and the Express framework. Upon…
This post was originally posted on the LogRocket blog on 09.02.2021 and was cross-posted here by the author. Depending on your previous exposure to programming languages and ecosystems, debugging can either be something you never do or an absolute fixture of your development process. For example, in the Java ( Kotlin and other JVM-based tech) ecosystem, due to it’s long history of sophisticated…
This post was originally posted on the LogRocket blog on 28.01.2021 and was cross-posted here by the author. Rust is a low-level systems programming language with good cross-compilation support, which makes it a prime candidate for writing command-line applications. Prominent examples range from reimplementations of widely used tools such as ripgrep , exa , and bat to full-blown terminal UI tools…
I recently re-sparked my interest for InfoSec and started dabbling with a couple of hacking platforms and war games and stumbled over TryhackMe , which so far has been an absolutely fantastic learning resource for information security. This post marks my first CTF write up, so if you stumble over this, keep this in mind and if you have suggestions for improving the flow of the post, or the general…
This post was originally posted on the LogRocket blog on 14.12.2020 and was cross-posted here by the author. Over the last few years, due in large part to the hype surrounding blockchain and cryptocurrencies, decentralized applications have gained quite a bit of momentum. Another factor behind the surging interest in decentralization is greater awareness around the downsides of putting most of the…
This post was originally posted on the LogRocket blog on 09.12.2020 and was cross-posted here by the author. In this tutorial, we’ll demonstrate how to write a very basic URL parser in Rust using the nom parser combinator library. What are parser combinators? Parser combinators are higher-order functions that can accept several parsers as input and return a new parser as its output. This approach…
This post was originally posted on the LogRocket blog on 26.10.2020 and was cross-posted here by the author. When dealing with dates and times in a modern web application - especially one that serves users from all around the world - handling time zones can become a concern. Depending on the use case, time zones can be rather tricky. A quick look at the IANA Time Zone Database and its release…
This post was originally posted on the LogRocket blog on 29.10.2020 and was cross-posted here by the author. JSON Web Tokens (JWTs) are a standard for securely representing attributes or claims between systems. They can be used in a client-server fashion to enable stateless authorization, whereas cookies are inherently stateful. However, they are more flexible than that and can also be used in…
This post was originally posted on the LogRocket blog on 20.10.2020 and was cross-posted here by the author. In my experience, when building web services, simpler is better. It’s tempting to take a fully featured, heavyweight web framework, drop it in, and use its convention-over-configuration approach to just “get stuff done”. Many developers have used this approach successfully, myself included.…
This post was originally posted on the LogRocket blog on 14.10.2020 and was cross-posted here by the author. When building web services with somewhat complex domain objects, good input validation is paramount. Validation of user input is fundamentally important in terms of not just security — never trust external inputs - but also usability. If the caller of a REST endpoint runs into an error, you…