My main issue shipping personal Rust CLI projects was convincing people, especially non-developers, to install a Rust toolchain. So I built binaries for the main desktop operating systems, made them updatable via package managers, and used GitHub Actions to automate the whole process. This article walks through how I did it. A CLI app can be distributed at several levels: Level 0: just source. In…
Both my previous and current companies took satellite images from the Artemis II before its launch from the Kennedy Space Center on April 1st, 2026. Planet took an optical image, and ICEYE took a SAR (synthetic-aperture radar) image, and this is the perfect opportunity to compare both technologies. Credit: Planet Labs PBC (left) and ICEYE US (right). The SAR image is not just a grayscale version;…
If your GIS system is based on the Python/Django/DRF/PostGIS stack, it is very common to perform geometry format conversions between its different layers. This short article includes a cheat-sheet of the most common conversions needed. Formats GeoDjango Geometry Field : this is how Django exposes its geometry model fields; it is basically a thin wrapper over the C/C++ GEOS library's objects.…
When modeling your database, you’ll inevitably need to identify the rows in your tables. This means picking a column to be its primary key; sounds simple enough: maybe just pick an auto-increment or UUID and go with it, right? But this subject is actually way deeper, and I hope I can give you all the tools you need to make an informed decision in this article. Types of identifiers Natural Natural…
When developing a system that needs to handle time, it is very common to need to track not only “when” something happens, but also “for how long” , for example: event calendars, taxi rides, etc. The most common patterns to solve this problem are start+end and start+duration, but both require two fields in your schema. Fortunately, PostgreSQL can solve this problem using a range field , a special…
On a previous article called " OpenStreetMap to GeoJSON ", I explained how to extract Polygons from OSM using an online tool provided by OSM France. And, on this article, I’ll explain how do that yourself directly using the OSM API and Python. This also explains the basic concepts I used to write the osmexp tool, to export OSM elements into GeoJSON from the command-line. The OpenStreetMap API…
This is a fun example of how to use Shapely to solve geographical problems. On this article I show how to cover a polygon with circles in a hexagonal pattern. Disclosure: I know quite well that this example is not realistic: real cell-towers are positioned according to terrain, urban density, zoning laws, etc. They are not played out on a nice regular grid. But, please indulge me for the sake of…
Did you ever change your mind about your Django database structure? Sometimes you need to create references between models, but for some reason you didn’t use a ForeignKey field, and there are good cases for that, for example: the ID came from a different system, but you decided to have a local copy. On this article I show how to convert it the proper way. If you decide to transform that field…
Arrays in PostgreSQL are very useful to represent lists of data without the need of extra “many-to-many” tables, but to take advantage of them, you need to know the basics; follow this article to learn them. Fields Arrays can be applied in all field types (including user-defined), but they are more commonly used over numbers (integers and floats) and strings (text, varchar, etc, usually as a…
When working with remote sensing, it is very common to save time data in a single timezone (usually UTC), this article shows how to convert that into local time based on the provided coordinates. Important: If you just want a production-ready library to use on your system, just skip this article and use timezonefinder : it is quite well maintained, faster, and it is already there, ready to use!…
The company MODARTT develops virtual musical instruments, but not by sampling, they simulate the physics of pianos and organs by modeling how the air (or string for pianos) and the rest of the instrument resonates and transmits the sounds. They wrote a very interesting article called Organ Physical Modeling where they explain in details how the pressure waves oscillate inside the air pipes; this…
The Kaiju Preservation Society , from John Scalzi. This is a fun novel that re-interprets the “giant monster” lore. Action and comedy are on point, and although it is not futuristic, it is very much a sci-fi story, and a good one!
If you want to combine the power of Rust with the free-style research orientation of Jupyter notebooks, try using the Rust kernel on it; this allows for an easy prospective approach, making it very similar to Python. Install Requirements Rust Rust’s documentation recommends installing via rustup : $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh But, if you need an offline…
Sometimes when dealing with coordinates, you may need to work in meters instead of degrees, but, since we don’t live in a flat earth, the calculation is not trivial. Thankfully, there are tools to help with the conversions. Understanting projections Maps are a lie! We live in a spheric-ish, bumpy and irregular planet, but we need to convey geographical information on flat surfaces, and those…
Use OpenStreetMap as your repository of geometries, and export them in the more convenient GeoJSON format. This technique only works with geometries with area (Polygon and MultiPolygon), points and lines break the exporting tool used here. Features on OpenStreetMap OpenStreetMap (OSM for short) has its own file format ( OSM XML ): this is an open format, but it was designed for OSM’s needs, it is…
The JSON format is the backbone of current Internet protocols and APIs, and this article contains a list of tools to make a better use of it from the command-line, without the need of writing complex programs to read, search, parse, transform and transmit JSON data. For the sake of example, every time you see test.json here, it refers to a file with the following content: { "countries": [ {…
If you want to dockerize a GeoDjango project, the most common method is to use an official Python image as its base, and install all GIS dependencies over it, being GDAL the heaviest one, making your final image easily reach the mark of the multi-megabytes. But GDAL is very modular, and most GeoDjango projects can work fine with its basic compilation. This article shows how to flip that…
After the uncertainty from the Twitter’s nosedive, I decided to revive my blog following the POSSE philosophy (publish own site, syndicate everywhere). I’m not going to delete my social accounts, but now I’ll always write here first.
Sherlock & Co : a modern take of Sherlock Holmes adventures, with Dr. Watson being the host of a true-crime podcast (very meta!). The first episode is just an introduction, and the episodes 2 to 4 are a 3-parter case!
Festival Interceltique de Lorient 2023 (in France), with folk bands from all celtic spectrum: from the the classical irish/english ones, to the cultural mixes from Galicia and Asturias! :warning: Warning: contains bagpipes! lots of them!
Gran Turismo : the first 10 minutes may give the impression that it would be a 2h game advertisement., but after the initial exposition it becomes a legit high-production sports movie, based on a real story of a gamer that became a real racing driver.
Delta-V Series , from Daniel Suarez, with 2 books: Delta-V (2019) Critical Mass (2023) This is a work of fiction, but very scientifically accurate and plausible for today’s or near-future’s technology. The first book is all about asteroid mining, and the second one is basically a blueprint for a “space economy”.
Termination Shock , from Neal Stephenson. This is a technically a sci-fi book, but very near-future! It happens in a world were climate crisis got out of hand, with droughts and floods everywhere, and an attempt to geo-engineer a solution for that, including all the political repercussions. This book is recent (from 2021), full of references of current global events, read it before it gets too…
Children of Time Series from Adrian Tchaikovsky : it is kinda of a “first-contact” scenario, but with a twist! ...very entertaining! Children of Time (2015) Children of Memory (2019) Children of Ruin (2022)
The episode Lula’s “zero deforestation” plan for the Amazon , from More or Less : a Podcast about statistics hosted by the BBC. That explains why the recent brasilian elections could have a huge impact on the environment in the near future.
Bee and PuppyCat : this is a cute animation that started as a Kickstarter project from an animator that worked on Adventure Time, and now got a fancy remake on Netflix.
Lost Terminal . This is a Sci-Fi story of an AI in orbit trying to figure out what happened to the world below. This feels more like a well-produced audiobook, but in the format of weekly episodes or ~15 minutes. Short trailer Direct RSS Feed
Lady Astronaut Series : it starts as alternate history and becones sci-fi: a meteor falls on earch in the 50s, starting a mass-extinction event process, that forces the countries to colaborate and bootstrap the space-age earlier. The Calculating Stars (2018) The Fated Sky (2018) The Relentless Moon (2020)
The Ministry for the Future , from “Kim Stanley Robinson” : it is technically Sci-Fi, but depicts a present to near future with natural and humanitarian disasters triggered by climate change.
Sergio on Netflix: it is about an UN human-rights representative who died in Iraq in 2003 and was responsible for the stablishment of East Timor in 2000. About 1/3 of the movie happens in East Timor, where I lived from 2005-2006; it was nice to see it portrait in a movie!
The episode #158 The Case of the Missing Hit from the podcast Reply All : it’s a detective/archelogy work to solve a great musical mistery with a very satisfying end.
Apollo Guidance Computer Restoration on YouTube: this shows a many-month-task-force to restore one of the few surviving Apollo computers, they went very deep into the specifications, blueprints, and needed to borrow modules from other computers like it in museums to copy the data still there! …it is not for everyone, but may have a good hit-rate with my friends!
Long time ago, when I lived in Brazil, I used to participate on the “New Media” movement. My biggest contribution was the participation on the PodPesquisa , a national survey about the podcast listeners. My role was increasing between iterations, from just data analysis on 2008 to lead the its development and run on 2014. Here is the list of compiled results by year (in portuguese): 2008 2009 2014
Welcome to Racummendations ! ...this is where I post my recommendations, opinions and thoughts about anything, but mostly technology, Sci-Fi books, games and other nerd stuff. My name is Ronaldo Ferreira (a.k.a. "Racum" ), I’m a brazilian software developer currently living in Valencia, so, expect to see my content leaning into my professional skills, and eventually into my hobbies. You can reach…