[{"categories":["Projects"],"content":"Play Kid is yet another Game Boy emulator, written in Rust. But hey, it is MY Game Boy emulator, and I\u0026amp;rsquo;m proud of it.\nRepository (Codeberg) Mirror (GitHub) Play Kid running different games with different color palettes. Here are the main features of Play Kid:\nAll CPU instructions implemented. Full memory map implemented. Modes: ROM, MBC1, MBC2, MBC3. Audio is implemented, with 4 channels, envelopes, sweep, and stereo. Supports game controllers via SDL. Multiple color palettes. Save …","href":"http://localhost:1313/projects/playkid/","tags":["rust","emulator","game boy","project"],"title":"Play Kid"},{"categories":["Emulators"],"content":" When I was a kid my parents got me and my brothers a brand new Game Boy. I used to play it a lot, and I was mesmerized and amazed at how such a tiny brick could give life to so many wonderful worlds. Some of my favorite games were Super Mario Land (1, 2, and 3, Wario Land), The Amazing Spider-Man, and Kirby\u0026amp;rsquo;s Dream Land. We also had some other games, like Bugs Bunny Crazy Castle or Tetris, that I also played quite a lot, and remember fondly.\nThe first Super Mario Land in particular was …","href":"http://localhost:1313/blog/2026/playkid/","tags":["emulator","game boy","play kid","computer architecture","programming","english"],"title":"Implementing a Game Boy emulator"},{"categories":["JPEG XL"],"content":"I\u0026amp;rsquo;ve written about JPEG XL in the past. First, I noted Google\u0026amp;rsquo;s move to kill the format in Chromium in favor of the homegrown and inferior AVIF.12 Then, I had a deeper look at the format, and visually compared JPEG XL with AVIF on a handful of images.\nThe latter post started with a quick support test:\n\u0026amp;ldquo;If you are browsing this page around 2023, chances are that your browser supports AVIF but does not support JPEG XL.\u0026amp;rdquo;\nWell, here we are at the end of 2025, and this very …","href":"http://localhost:1313/blog/2025/google-unkills-jpegxl/","tags":["chromium","chrome","google","jpeg xl","jxl","avif","webp","jpeg","png","programming","open-source","image","formats","english"],"title":"Google *unkills* JPEG XL?"},{"categories":["Gaia Sky"],"content":"Astronomical scenes, especially those rendered interactively, often feature supraluminal camera motion over immense distances. Sometimes, these motions are rendered by applying trail effects to light-emitting objects to enhance the faster-than-light velocity sensation. Gaia Sky will get an implementation of motion trails in the next version (3.6.9). Motion trails are a visual effect that stretches stars, galaxies, and other light-emitting particles in the direction of the velocity vector of the …","href":"http://localhost:1313/blog/2025/motion-trails/","tags":["gaia sky","graphics","rendering","glsl"],"title":"Motion trails in Gaia Sky"},{"categories":["Java"],"content":" A few days ago I wrote about benchmarking arbitrary precision floating-point libraries in Java. I found out that BigDecimal is not as slow as it is said to be, beating Apfloat at the same precision level by a long margin in most operations. However, for Gaia Sky, I don\u0026amp;rsquo;t need hundreds of significant digits at all. It turns out 27 significant digits are enough to represent the whole universe with a precision of 1 meter.\nThe observable universe has a radius of about \\(4.4 \\times 10^{26}\\) …","href":"http://localhost:1313/blog/2025/quadruple-joins-party/","tags":["java","benchmarking","performance","JMH","arithmetics","Quadruple","Apfloat","BigDecimal"],"title":"Quadruple joins the fight!"},{"categories":["Java"],"content":"Edit (2025-05-08): Changed some test parameters and re-run the tests. Also added bar plots.\nNote: I have since written a new blog which includes Quadruple to the benchmarks, beating both Apfloat and BigDecimal consistently.\nI recently set out to compare the performance of Apfloat and BigDecimal for arbitrary precision arithmetic in Java. I use arbitrary precision floating point numbers in key places of the update cycle in Gaia Sky, so it made sense to explore this. My initial approach was a …","href":"http://localhost:1313/blog/2025/apfloat-bigdecimal/","tags":["java","benchmarking","performance","JMH","arithmetics","Apfloat","BigDecimal"],"title":"Benchmarking arbitrary precision libraries in Java"},{"categories":["Garmin"],"content":"I\u0026amp;rsquo;ve been a Garmin user for many years, shelling out non-trivial amounts of monies for their sports watches. My first Garmin watch was a Forerunner 10 (black/red). Battery life was abysmal, but back then this was the norm. Today, I\u0026amp;rsquo;m sporting a Forerunner 255, which I love. It\u0026amp;rsquo;s not top-of-the-line, but it is more than enough for my modest purposes. These devices have been my trusty companions on countless runs, football matches, and hikes, providing invaluable data without any …","href":"http://localhost:1313/blog/2025/garmin-not-you/","tags":["garmin","subscription","enshittification"],"title":"Oh Garmin, not you!"},{"categories":["AI"],"content":"In my last post, I explored the concept of Retrieval-Augmented Generation (RAG) to enable a locally running generative AI model to access and incorporate new information. To achieve this, I used hardcoded documents as context, which were then embedded as vectors and persisted into Chroma DB. These vectors are used during inference to use as context for a local LLM chatbot. But using a few hardcoded sentences is hardly elegant or particularly exciting. It\u0026amp;rsquo;s alright for educational purposes, …","href":"http://localhost:1313/blog/2025/gaiasky-ai-assistant/","tags":["LLM","AI","ollama","RAG"],"title":"Building a local AI assistant with user context"},{"categories":["AI"],"content":"Edit (2025-03-26): Added some words about next steps in conclusion.\nEdit (2025-03-25): I re-ran the example with a clean database and the results are better. I also cleaned up the code a bit.\nOver the past few months I have been running local LLMs on my computer with various results, ranging from \u0026amp;lsquo;unusable\u0026amp;rsquo; to \u0026amp;lsquo;pretty good\u0026amp;rsquo;. Local LLMs are becoming more powerful, but they don\u0026amp;rsquo;t inherently \u0026amp;ldquo;know\u0026amp;rdquo; everything. They\u0026amp;rsquo;re trained on massive datasets, but …","href":"http://localhost:1313/blog/2025/local-llm-rag/","tags":["LLM","AI","ollama","RAG"],"title":"Local LLM with Retrieval-Augmented Generation"},{"categories":["Gaia Sky"],"content":"Over the past few weeks I\u0026amp;rsquo;ve been working on a new standalone website for Gaia Sky. It uses the same technology stack as my personal website (essentially Hugo), so it is a static website generated from templates and content. This is enough for Gaia Sky. I am no graphic designer or UX person, but I tried my best to make it look potable.\nThe new Gaia Sky website, gaiasky.space Why did I create a standalone website instead of keeping the old section in the ZAH site? A few reasons:\nIt is much …","href":"http://localhost:1313/blog/2025/phd-successfully-defended/","tags":["gaia sky","website","tech","web","html","css","js"],"title":"Gaia Sky gets new website"},{"categories":["gaia sky"],"content":"A few weeks ago someone created an issue in the Gaia Sky Codeberg repository requesting the addition of aurorae to the Earth. They used as an example the aurora add-on in Cosmographia1, which, at the time, looked to me like it was using some kind of billboard particle system to generate the effect. I never thought it looked particularly good for an aurora; I thought Gaia Sky could do better. So I set on a quest to implement a better looking aurora object in Gaia Sky. This wee quest would involve …","href":"http://localhost:1313/blog/2024/rendering-aurorae-nebulae/","tags":["rendering","opengl","glsl","aurora","northern lights","nebulae","gaia sky","programming","volume rendering","astronomy","english"],"title":"Rendering volume aurorae and nebulae"},{"categories":["vcs"],"content":"I first discovered Jujutsu a few weeks ago, and I was immediately intrigued. At first glance, it looked like a simple wrapper around Git, but the deeper I looked, the more impressed I became with its design. Jujutsu, I discovered, offers a new and fresh spin to DVCSes that leads to cleaner and simpler workflows.\nIn this post, I have a look at what Jujutsu has to offer, and I dive into its command line interface and workflow. My goal is that, by the end of this post, you can understand a little …","href":"http://localhost:1313/blog/2024/jujutsu/","tags":["git","jj","jujutsu","programming","tooling","english"],"title":"Jujutsu, a modern version control system"},{"categories":["texteditor"],"content":"Today I have updated my $EDITOR variable to point to Helix instead of Neovim, and also configured Yazi to use it as the first option for text. I have used [Neo]vim since forever, so what made me switch? In this post, I discuss some of the ups and downs of both editors and what ultimately made me decide for Helix.\n\u0026amp;nbsp;\u0026amp;nbsp;Note This article\u0026amp;rsquo;s purpose is not at all to speak ill of Neovim, but rather to appreciate Helix, a relatively new project that does not always get the recognition it …","href":"http://localhost:1313/blog/2024/on-neovim-and-helix/","tags":["vim","helix","kakoune","modal","English"],"title":"On Neovim and Helix"},{"categories":["programming"],"content":"Nowadays, makefiles are ubiquitous in software. Most C and C++ projects have used them historically, and still use them as a build system. Nowadays, lots of projects written in other languages which have their own build tools also use them, not to make files, but to store and run commands in an organized manner. If this is you, you are doing it wrong. However, there is a tool designed to do just that: just.\nWhat is make make is a GNU utility mainly used to make files. It automatically determines …","href":"http://localhost:1313/blog/2024/make-use-of-just/","tags":["c","c++","rust","make","just","commandline","linux","english"],"title":"Just ``make`` use of ``just``"},{"categories":["Graphics"],"content":"Do you want to add a canvas with a shader running in real time to your Hugo site? In this post I show how to create a Hugo shortcode to display a shader.\nYou need two ingredients for this recipe:\nThe glslCanvas Javascript library (single file) originally written for The Book of Shaders website. Save it in your /js directory. Download it with:\nwget https://github.com/patriciogonzalezvivo/glslCanvas/raw/4d5e073bf135692178d7cb62b5cc32dac2dae19f/src/GlslCanvas.js Then, add js = …","href":"http://localhost:1313/blog/2024/shader-shortcode/","tags":["glsl","shaders","hugo","shortcode","website"],"title":"Shader canvas Hugo shortcode"},{"categories":["gaia sky"],"content":"A couple of years ago I wrote about the procedurally generated planets in Gaia Sky. In this post, I provided a more or less detailed technical overview of the process used to procedurally generate planetary surfaces and cloud layers.\nSince then, we have used the system to spice up the planets in the planetary systems for which the Gaia satellite could determine reasonable orbits (see the data here, and some Gaia Sky datasets for some of those systems here, including HD81040, Gl876, and more). …","href":"http://localhost:1313/blog/2024/supercharging-planetary-surfaces/","tags":["gaia sky","simulation","technical","programming","procedural","astronomy","exoplanets","english"],"title":"Supercharging exoplanets"},{"categories":["life"],"content":"Edit (2024-07-03): The thesis has now been published and is available here (Open Access).\nAfter almost 2 years since the submission of my Ph.D. thesis, I finally could defend it successfully last Friday (May 3, 2024). It has been a long journey, exactly 9 years since the initial acceptance on May 3, 2015. The road has been bumpy, especially since I had to juggle my job with the work I was doing on the side for the thesis, but in the end I think it was well worth it. I learned a ton, especially …","href":"http://localhost:1313/blog/2024/phd-successfully-defended/","tags":["phd","thesis","education","english"],"title":"Ph.D. thesis defended successfully"},{"categories":["linux"],"content":"The POSIX diff, cmp and patch commands are very versatile. Sometimes, you need to edit a part of a file and send only your changes to somebody else to apply. This is where these handy commands can help. This post describes concisely how to use them to compare files, create patches and apply them.\nBefore starting, I need to point you to the GNU documentation on the subject, which is quite extensive and well written:\nGNU \u0026amp;ndash; Comparing and Merging Files. To start, let\u0026amp;rsquo;s imagine we have a …","href":"http://localhost:1313/blog/2024/creating-applying-patches/","tags":["programming","english","linux","cli","technical"],"title":"Creating and applying patches"},{"categories":["Steam Deck"],"content":"I got my Steam Deck almost a year ago. I got the cheapest 64 GB model fully expecting that I would need to upgrade its internal M.2 2230 NVMe SSD to something with more capacity down the road. Well, the day finally came. In this post I report the quick and painless process I followed to successfully upgrade the Steam Deck 64 GB SSD to a more than respectable 1 TB M.2 NVMe drive. Here are the steps involved in the process:\nstep 0: pre-requisites step 1: open the deck step 2: clone the drives step …","href":"http://localhost:1313/blog/2023/steam-deck-ssd-upgrade/","tags":["technology","graphics","technical","steam","ssd","upgrade","english"],"title":"Replacing the Steam Deck SSD"},{"categories":["Linux"],"content":"MangoHud is an overlay for monitoring frame rates, frame times, temperatures and CPU/GPU loads on Vulkan and OpenGL applications in Linux. It is also the default performance overlay used in the Steam Deck, and it is awesome.\nI know the amount of people using Java for high performance graphics is not very high, but they are there, of that I\u0026amp;rsquo;m sure. I\u0026amp;rsquo;m actually one of them. Gaia Sky is written in Java, and even though it has its own rudimentary debug overlay, MangoHud goesfar beyond …","href":"http://localhost:1313/blog/2023/idea-mangohud/","tags":["graphics","linux","mangohud","english"],"title":"MangoHud and Java"},{"categories":["website"],"content":"A while ago I published this post about a better figure shortcode for Hugo that enabled lazy loading. Today, I bring you yet another update on the same shortcode. This time around, the focus is on leveraging the HTML picture element, which enables alternative versions of the same image in different formats, leaving the browser to decide which one to use. You can serve the same image in, for instance, JPEG-XL and plain old JPEG at the same time. The browser will read the tag, and select the …","href":"http://localhost:1313/blog/2023/hugo-picture-shortcode/","tags":["html5","hugo","jpeg xl","english"],"title":"Hugo picture shortcode with multiple sources"},{"categories":["Programming"],"content":"Gaia Sky has been using the OpenVR API from SteamVR for the last few years to power its Virtual Reality mode. However, the API is notoriously poorly documented, and it only works with the SteamVR runtime.1 That leaves out most of the existing VR headsets. Luckily, the main vendors and the community at large joined efforts to come up with an API that would be adopted by all and backed by the Khronos Group: OpenXR. Obviously, since Gaia Sky is actively maintained, it is only natural that a …","href":"http://localhost:1313/blog/2023/steamvr-to-openxr/","tags":["gaia sky","graphics","technical","vr","virtualreality","openxr","steamvr","openvr","english"],"title":"OpenXR to the rescue"},{"categories":["JPEG XL"],"content":"Edit (2024-01-24): Following a comment on Mastodon, I have added a reference on the good performance of lossless WebP.\nEdit (2023-03-30): Added a couple extra images to test for high-quality encoding and illustrations. Introduce SSIM and MSE measures.\nEdit (2023-03-03): Fixed mistake, as AVIF does in fact NOT support progressive decoding.\n\u0026amp;nbsp;\u0026amp;nbsp;Disclaimer This is a subjective look at JPEG XL and AVIF. All comparisons in this post (except the ones using SSIM and MSE) are perceptual and …","href":"http://localhost:1313/blog/2023/jpegxl-vs-avif/","tags":["open-source","image","visualization","formats","jpeg xl","jxl","avif","jpeg","png","webp","english"],"title":"JPEG XL vs AVIF: a comparison"},{"categories":["Nostr"],"content":"After the acquisition of Twitter by the South African con-man and billionaire the free and open source social network world is generating a lot of heat. The number of users and nodes of Mastodon in particular and the Fediverse at large has been climbing steadily for months now. However, there is no shortage of people who voice their concerns about the federated nature of such services, which rely on centralized instances governed by small dictators with absolute power. But this is not the post …","href":"http://localhost:1313/blog/2023/rise-of-nostr/","tags":["technical","web","social","network","internet","privacy","technology","english"],"title":"The meteoric rise of nostr"},{"categories":["Website"],"content":"Just a short note. I have moved this site from Codeberg Pages to nearlyfreespeech.net. By the time you are reading this the move should already be finished. This hosting service is dirt-cheap for low-traffic static sites like mine. Right now, my estimated total sits at $0.31 per month, which is $3.72 per year. Less than the cheapest price per month offered by most other hosting providers. But they also only offer starting packages allocating many more resources than what is needed for simple …","href":"http://localhost:1313/blog/2023/move-nearlyfreespeech/","tags":["website","hosting","english"],"title":"I'm moving"},{"categories":["Programming"],"content":"Edit (2023-04-05): Added some suggestions by the author/developer of libvips.\nToday I discovered libvips, a command line utility and library to manipulate and process images, and I am impressed. I\u0026amp;rsquo;ve been using ImageMagick and its fork, GraphicsMagick, for as long as I have had to process images from the CLI, and they work well for moderately-sized images. But lately, I have been preparing virtual texture datasets for Gaia Sky and the sizes of my images have increased exponentially. Right …","href":"http://localhost:1313/blog/2023/libvips/","tags":["graphics","linux","commandline","cli","image","english"],"title":"Libvips is a good image processor"},{"categories":["Computer Graphics"],"content":" Implementing proper virtual texture support in Gaia Sky has been on my to-do list for many years. And for many years I have feared that very item, as the virtual texture mechanism is notoriously complex and hard to implement. However, once working, they are very cool and bring a lot of value to a Universe visualization platform such as Gaia Sky. In this post, I describe and discuss my implementation of virtual textures in Gaia Sky in detail, and provide a thorough examination of some of its …","href":"http://localhost:1313/blog/2023/sparse-virtual-textures/","tags":["gaia sky","technical","programming","graphics","opengl","glsl","svt","megatexture","english"],"title":"Sparse Virtual Textures"},{"categories":["JPEG XL"],"content":"The web is currently based around the JPEG, PNG and GIF image formats. These are all very old and suboptimal formats which were never designed in the first place with the modern web in mind. A few newer competing formats have popped up recently, aiming to dethrone the original trio to postulate themselves as the standard web image format of the future. These are, essentially, WebP (.webp extension), developed by Google and hated by almost everyone else, AVIF (.avif extension), based on the AV1 …","href":"http://localhost:1313/blog/2022/jpeg-xl-chrome/","tags":["chromium","chrome","google","jpeg xl","jxl","avif","webp","jpeg","png","programming","open-source","image","formats","english"],"title":"Google kills JPEG XL"},{"categories":["Photography"],"content":"Yesterday I created an account in pixelfed.social, one of the many instances of Pixelfed, the distributed image sharing open source project which federates with Mastodon and others. Anyone can set up its own instance and have it \u0026amp;rsquo;talk\u0026amp;rsquo; to all the others. So, I created an account and started sharing some of my shots. For the most part, it works very well and I\u0026amp;rsquo;m eternally grateful that something like this exists, free from the claws of big corporations hungry for your data.\nIn …","href":"http://localhost:1313/blog/2022/pixelfed-account/","tags":["pixelfed","fediverse","mastodon","pleroma","federation","photo","english"],"title":"Pixelfed"},{"categories":["Life"],"content":"After some seven long years of working on my Ph.D. off-the-clock and three extensions, about a month ago I finally submitted my thesis to the doctoral office for review. I started back in 2015 when I had no kids. Today, I have two kids and 3 peer-reviewed papers on top visualization journals (and an unpublished one).\nIt has been an interesting ride indeed. For now, I can relax for a few weeks until the examination date is set.\nView of the printed thesis front page and cover Detail of a page in …","href":"http://localhost:1313/blog/2022/thesis-submitted/","tags":["thesis","phd","education","english"],"title":"Thesis submitted"},{"categories":["Gaia Sky"],"content":"In these last few days I have merged a huge internal refactoring into Gaia Sky\u0026amp;rsquo;s master branch. This refactoring has been cooking for several months and has adapted or completely replaced virtually every piece in the code base. Read on if you want to know more.\nEntity component systems Up until very recently, the internal model in Gaia Sky was implemented with an OOP inheritance hierarchy with a baked in scene graph and octree. The model was huge, with an object called SceneGraphNode at …","href":"http://localhost:1313/blog/2022/gaia-sky-ecs/","tags":["gaiasky","programming","java","design","english"],"title":"Huge refactoring in Gaia Sky: ECS"},{"categories":["website"],"content":"In their own words, taken from the docs, \u0026amp;ldquo;Codeberg is a democratic community-driven, non-profit software development platform operated by Codeberg e.V. and centered around Codeberg.org, a Gitea-based software forge.\u0026amp;rdquo;. Essentially, it is a non-profit platform run on donations for sharing free and open source software by providing a collaborative VCS environment based on Gitea. One good day I decided to move all my open source repositories from GitLab over to Codeberg, and that …","href":"http://localhost:1313/blog/2022/codeberg-setup/","tags":["git","repository","codeberg","english"],"title":"Hello, Codeberg Pages"},{"categories":["Programming"],"content":"From time to time I profile Gaia Sky to find CPU hot-spots that are hopefully easy to iron out. To do so, I launch my profiler of choice and look at the CPU times for the top offender methods. Today I went through such a process and was surprised to find a forEach() method of the Java streams API among the worst offenders. Was the forEach() slowing things down or was it simply that what\u0026amp;rsquo;s inside the loop took too long to process? I found conflicting and inconsistent reports in the …","href":"http://localhost:1313/blog/2022/java-loop-performance/","tags":["programming","java","profiling","cpu"],"title":"Performance analysis of Java loop variants"},{"categories":["Linux"],"content":"Wayland is a modern display server protocol that will eventually replace X11. It is still not quite a hundred percent there, but it has been improving steadily and gaining ground over the past years. It is expected to become the new default display server on Linux systems at some point in the near future\u0026amp;hellip; Whatever near means in that context.\nThis past weekend I had some time to play around with Sway, a window manager and Wayland compositor that mimics i3. How did it go?\nWhy even care …","href":"http://localhost:1313/blog/2022/wayland-sway/","tags":["linux","i3wm","sway","wayland","open source","english"],"title":"Trying out Sway and Wayland"},{"categories":["Programming"],"content":"Edit (2024-07-08): We have written a new post to expand on this one. Check it out here.\nEdit (2024-06-26): As of Gaia Sky 3.6.3, the procedural generation process has been moved to the GPU. Even though the base method is the same, a number of things have changed from what is described here. For instance:\nThe generation is now almost instantaneous, even with high resolutions. Gradval and Value noise are no longer available. Voronoi and Curl noise are now available. The process takes into account …","href":"http://localhost:1313/blog/2021/procedural-planetary-surfaces/","tags":["programming","procedural","graphics","opengl","english"],"title":"Procedural generation of planetary surfaces"},{"categories":["Git"],"content":"When I started using git as my VCS I skimmed the docs and git-bisect caught my eye. I got acquainted with it rather quickly and have been using it regularly ever since. git-bisect is a little handy git sub-command typically used to quickly narrow down the commit where a bug was introduced in a code base. It uses a simple binary search tree algorithm (BST) to test out different revisions by parting the remaining search space in half.\nBasically, one needs just one thing to start bisecting: the …","href":"http://localhost:1313/blog/2021/git-bisect/","tags":["programming","git","vcs","english"],"title":"Git bisect"},{"categories":["Programming"],"content":"Do you often find yourself using \u0026amp;ldquo;New feature\u0026amp;rdquo;, \u0026amp;ldquo;More\u0026amp;rdquo; or similar short, useless and generic strings as your git commit messages? I know I did. Until I learned about semantic commit messages, that is. What are they and how can they exponentially improve your commit history and make it actually useful? I\u0026amp;rsquo;m discussing it in this post.\nSemantic commit messages are intended to bring some structure and order to your git history\u0026amp;mdash;or whatever VCS you happen to use. …","href":"http://localhost:1313/blog/2021/git-semantic-commit-messages/","tags":["git","svn","programming","development","english"],"title":"Semantic commit messages"},{"categories":["Photography"],"content":"A few days ago I got my new camera, a brand new Fujifilm X-S10. Since I\u0026amp;rsquo;m coming from the Canon ecosystem I have a few EF and EF-S lenses which I like. In order to use them with my new system I also acquired the auto focus lens mount adapter Viltrox EF-FX1, which allows EF/EF-S Canon lenses to be used with Fuji-X mount mirrorless cameras. This is an adapter with electronics, so it enables not only auto focus but also aperture control and EXIF data transmission. But does it really work? Is …","href":"http://localhost:1313/blog/2021/viltrox-ef-fx1-review/","tags":["gear","photo","lens","english"],"title":"Viltrox EF-FX1 lens adapter review"},{"categories":["website"],"content":"The HTML \u0026amp;lt;img /\u0026amp;gt; tag has this handy attribute loading=\u0026amp;quot;lazy\u0026amp;quot; that enables lazy image loading, so that images are only loaded whenever the user scrolls all the way down to their position. This makes page loading super-fast, and reduces the amount of wasted bandwidth, especially when browsing from page to page. In the past this was achieved by a few lines of custom JavaScript code, but it is supported by all major browsers, both for PC and mobile. It should always be used unless …","href":"http://localhost:1313/blog/2021/lazy-image-load-hugo/","tags":["html5","hugo","english"],"title":"HTML lazy image loading"},{"categories":["Syncthing"],"content":"These days almost everyone uses services like Dropbox or mega.nz to store their important files and have them accessible wherever and whenever they need them. I\u0026amp;rsquo;m told it is not uncommon to use these external services to back up all one\u0026amp;rsquo;s files, from photos to sensitive and private documents. Well, good news. If you actually care about your files and feel uneasy to have them all in other people\u0026amp;rsquo;s servers, you may want to have a look at Syncthing, an open source and free (as in …","href":"http://localhost:1313/blog/2021/syncthing/","tags":["cloud","drive","dropbox","privacy","linux","english"],"title":"Use Syncthing to synchronize your files"},{"categories":["Photography"],"content":"I\u0026amp;rsquo;ve been using the compact point-and-shoot Panasonic Lumix DMC-LX10 as my main camera of choice for the past few years. Make no mistake, it captures very high-quality pictures taking into account its 1-inch sensor size. My old DSLR, the Canon EOS 40D, still works fairly well, but it\u0026amp;rsquo;s starting to show its age: The trigger button is hit-or-miss\u0026amp;mdash;even after cleaning it thoroughly with isopropyl alcohol, the camera no longer establishes a connection to a PC via USB and downloading …","href":"http://localhost:1313/blog/2021/fuji-x-s10-first-impressions/","tags":["gear","photo","english"],"title":"Fujifilm X-S10: first impressions"},{"categories":["Security"],"content":"If you work regularly with remote machines or use online services like Gitlab, you are probably using an SSH key. And if you have not updated it recently, chances are you are using an RSA key, or, god forbid, an ECDSA or DSA key. Well, bad news: in order to be on the safe side, you should probably upgrade. A presentation at BlackHat 2013 reported significant advances in solving the problems on which DSA and some other key types are based. The presentation suggested that keys based on elliptic …","href":"http://localhost:1313/blog/2021/upgrade-ssh-key/","tags":["security","privacy","linux","rsa","ed25519","ssh","english"],"title":"Upgrade your old RSA SSH key to Ed25519"},{"categories":["Website"],"content":"It is nowadays commonplace to upload your valued photos to online services that don\u0026amp;rsquo;t respect your rights like Flickr, Google Photos or Instagram. While these sites have a social component that may help you build an audience and have a wider reach, usually their terms and conditions are abusive to end users. In this post I\u0026amp;rsquo;ll be discussing how to create your own static HTML photo gallery that you can host on your website using thumbsup, a static gallery generator written in Python …","href":"http://localhost:1313/blog/2021/static-photo-gallery/","tags":["website","privacy","programming","html","english","thumbsup"],"title":"Create your static photo gallery with thumbsup"},{"categories":["Privacy"],"content":"I have been using DuckDuckGo as my search engine of choice for the last few years. Howerver, DuckDuckGo seems to have a few problems:\nIt is based in the US, arguably not the most privacy-respecting jurisdiction in the world. Only part of their source code is open. Uses Amazon Web Services (AWS) as a cloud provider and Cloudfare CDS. It looks like their browser was caught tracking visited websites per user. At the end of the day, you can\u0026amp;rsquo;t really know that they are telling the truth when …","href":"http://localhost:1313/blog/2021/searx-or-duckduckgo/","tags":["search","linux","privacy","english","qutebrowser","open-source","archlinux"],"title":"Searx: moving away from DuckDuckGo"},{"categories":["Linux"],"content":"A couple of years ago I wrote a blog post about my Linux setup at the time. Well, understandably a lot of things have changed since then, and instead of updating a two year old post, I think writing a new one from scratch with the same principle and using the same template makes more sense. It is always fun to go back and read these old posts, and I fully expect that this one post will be as enjoyable for me in a few years time.\nOverview In this post I\u0026amp;rsquo;m documenting the current (November …","href":"http://localhost:1313/blog/2021/my-setup-2/","tags":["programming","scripts","i3wm","i3blocks","rice","qutebrowser","pass","neovim"],"title":"My Linux setup (as of 11/2021)"},{"categories":["Gaia Sky"],"content":"In the past few weeks I have been implementing a couple of features into Gaia Sky. The first is the addition of variable star rendering. The second is the re-implementation of all point cloud render systems to use actual geometry (triangles) instead of point primitives. This post briefly offers a preview of these features.\nVariable stars This is quite straightforward. Instead of representing a star with a single static magnitude, we use the light curve (time series) and fold it with the period …","href":"http://localhost:1313/blog/2021/gaiasky-point-cloud-rendering/","tags":["opengl","gaiasky","rendering","stars","english"],"title":"Variable stars and new render systems"},{"categories":[],"content":"In the Linux world, a display manager is a little GUI program that presents the user with a login screen right after boot, allows her to enter her login credentials and choose the desired desktop environment or window manager. The most common ones are gdm (the default in Gnome), kdm (same for KDE), lightdm (originally written for Ubuntu\u0026amp;rsquo;s Unity DE) and lxdm (for LXDE). There also exist a bunch of arguably simpler terminal-based display managers like ly, cdm or nodm.\nBut for most users a …","href":"http://localhost:1313/blog/2021/dont-need-dm/","tags":[],"title":"You (probably) don't need a display manager"},{"categories":["Emulators"],"content":"I\u0026amp;rsquo;ve written about the CHIP-8 machine before. It is a very simple interpreted programming language that can be implemented without much hassle by anyone interested in getting their feet wet with emulators. It is commonly regarded as the \u0026amp;ldquo;hello world\u0026amp;rdquo; of emulators.\nSome time ago I decided to implement a CHIP-8 emulator in Rust as my second project written in that language. My first foray into the language was the porting of the Gaia Sky LOD catalog generation tool from Java. …","href":"http://localhost:1313/blog/2021/chip8-implementation/","tags":["emulator","computer architecture","programming","english"],"title":"Implementing a CHIP-8 emulator"},{"categories":["Gaia Sky"],"content":"Over the last two weeks I have released the feature-packed version 3.1.0 of Gaia Sky. Two bugfix releases (3.1.1 and 3.1.2) followed shortly to fix bugs and regressions introduced in the former. This post contains a small rundown of the most interesting features in these three new versions. Let\u0026amp;rsquo;s get started.\nEnabling absolute positioning The first and most important feature is the re-implementation of the core positioning module of Gaia Sky. We have moved the arithmetics to …","href":"http://localhost:1313/blog/2021/whats-new-gaiasky-31x/","tags":["programming","opengl","release","version","english","gaiasky"],"title":"What's new in Gaia Sky 3.1"},{"categories":["Linux"],"content":"GNU screen is a terminal multiplexer that allows for different virtual windows and panes running different processes within the same terminal session, being it local or remote. This post contains a quick reference to the most used default key bindings of GNU screen. In contrast to other terminal multiplexers like tmux, GNU screen is probably already installed in your server of choice.\nCommands Command Action screen -S \u0026amp;lt;session-name\u0026amp;gt; create new session with name screen -r or screen -x …","href":"http://localhost:1313/blog/2021/gnu-screen-cheatsheet/","tags":["linux","english","gnu screen","cli","terminal"],"title":"GNU screen cheatsheet"},{"categories":[],"content":"If you are not interested in tech in general and in NAS manufacturers in particular you may have missed the latest news on the shiny new exploit affecting QNAP NAS systems: the Qlocker. Basically, the attackers gained access to QNAP systems and used 7-zip to move the user\u0026amp;rsquo;s files to password-protected archives. Then, they started a massive ransomware campaign asking for 0.01 BTC (around 500 USD) for the password to unlock the files.\nWell, it turns out there\u0026amp;rsquo;s a hardcoded password in …","href":"http://localhost:1313/blog/2021/qnap-meltdown/","tags":[],"title":"QNAP meltdown: Qlocker"},{"categories":["Computers"],"content":"Looking for new projects to sharpen my Rust skills, I came across a Reddit post where someone mentioned CHIP-8. CHIP-8 is an interpreted low-level programming language and virtual machine specification that is very commonly used as a \u0026amp;ldquo;Hello world!\u0026amp;rdquo; project of sorts for people to get their feet wet with emulator programming. It is simple enough to be able to implement a fully-featured emulator in a couple of sessions, but it has all the key parts of a real machine, to the point that …","href":"http://localhost:1313/blog/2021/chip8-spec/","tags":["computer architecture","emulation","programming"],"title":"CHIP-8 virtual machine specification"},{"categories":["Linux"],"content":"A while back I changed my bar from Polybar to i3bar with i3blocks. One of the things I missed about Polybar is its internal CPU module, which can produce a core load graph directly in your bar by adding the right ramp characters. In this post I\u0026amp;rsquo;m sharing a simple POSIX shell script I\u0026amp;rsquo;ve written that does the same and can be used with any text-based bar. Here is what it looks like:\nCPU core load graph in my bar. This is the script.\n1 2 3 4 5 6 7 8 9 10 11 12 #!/bin/sh # Define array …","href":"http://localhost:1313/blog/2021/cpu-histo-block/","tags":["i3wm","linux","i3blocks"],"title":"CPU core load graph script for your bar"},{"categories":["Photography"],"content":"I got my first DSLR camera in the latter half of 2007 and I have been interested in photography ever since. In all this time, I\u0026amp;rsquo;ve combined periods where I\u0026amp;rsquo;m very excited to go out and shoot with others where I\u0026amp;rsquo;ve felt quite apathetic about it. My guess is that that\u0026amp;rsquo;s a quite common pattern among enthusiasts, and even a healthy one. Anyway, this page contains a description of my gear and a link to a photo gallery containing some of the photos that I\u0026amp;rsquo;ve captured over …","href":"http://localhost:1313/photography/","tags":["photo","gear","gallery"],"title":"Photography"},{"categories":["Privacy"],"content":"This site strives to be as bloat-free as possible. It does not use cookies, tracking codes, analytics scripts or anything else that can be used to invade personal privacy. We use, however, the privacy-respecting sessionStorage1 to store the user\u0026amp;rsquo;s theme preference, if any.\nThis site serves, along with the HTML page, 2 JavaScript files (theme manager, which loads at the top of the body element, and a bundle with the rest, loaded in the footer), 1 font file (fork awesome) and 1 CSS file. …","href":"http://localhost:1313/privacypolicy/","tags":["website","privacy","principles"],"title":"Privacy Policy"},{"categories":["Website"],"content":"Search functionality in a small website like mine is usually arguably useless. I, for once, never even care to check whether a specific website offers it. I find a post that interests me via a search engine or aggregator, navigate to the page, read the post and then leave. However, I am not against local, serverless indexing and searching, even though most search engines provide site-specific searches. That is why I moved the search function of this website to a local, JavaScript-based …","href":"http://localhost:1313/blog/2021/static-search-website/","tags":["website","design","programming","javascript","search"],"title":"Static search for your website"},{"categories":["RaspberryPi"],"content":"In the last months, chimp, my old 2013 ZOTAC ZBOX ID42 HTPC, has been struggling more and more to decode and transcode high-resolution video on the fly, especially when encoded in H.265/HEVC. Thus, I set out to find a worthy successor to act as a squire to my TV. The ZOTAC still works, mind you, but it has become slow, loud and it takes ages to boot Arch Linux.\nRaspberry Pi NinkBox kit. In my crusade to find the perfect replacement, I have considered recent off-the-shelf HTPCs, options with a …","href":"http://localhost:1313/blog/2021/raspberry-pi-4-first-impressions/","tags":["sbc","raspberrypi"],"title":"Raspberry Pi 4: First impressions"},{"categories":["Gaia Sky"],"content":" In this post, I\u0026amp;rsquo;m mirroring the Gaia Sky 3 tutorial I wrote for the official Gaia Sky documentation to use as a rough script for the workshop given in a splinter session of the 2021 DPAC consortium online meeting held on March 17 and 18, 2021. You can find the original page here.\n\u0026amp;nbsp;\u0026amp;nbsp;Hint\nThis article is best viewed in light mode: lights on!\nThe main aim of this tutorial is to provide a comprehensive introduction on the usage of the most common features of Gaia Sky (versions 3 and …","href":"http://localhost:1313/blog/2021/gaiasky-3-tutorial/","tags":["programming","opengl","release","version","english","tutorial","gaia sky"],"title":"Gaia Sky 3 tutorial for complete beginners"},{"categories":["Gaia Sky"],"content":"It\u0026amp;rsquo;s been a while since I last talked about new Gaia Sky releases. Today I\u0026amp;rsquo;m doing a recap of the last four releases, starting with 3.0.0. This very verison came out with Gaia eDR3 on Dec 3, 2020. It was a big jump for Gaia Sky, as it introduced a plethora of new features and QOL improvements along with lots of bug fixes and little tweaks. This post goes over the latest versions from 3.0.0 to 3.0.3, and reflects on what they brought to the table.\nJump to the analysis for each of the …","href":"http://localhost:1313/blog/2021/gaia-sky-30x/","tags":["programming","opengl","release","version","english","gaia sky"],"title":"Gaia Sky 3"},{"categories":["Website"],"content":"If you are like me and you like your user interfaces to be as dark as possible, you have the dark mode preference of your browser enabled. You may have noted that this site has now a dark mode which is activated by default. This is done by querying the prefers-color-scheme setting in the browser. This post describes how this is done, and it discusses a few tweaks I have implemented design-wise to simplify things and remove useless visual elements.\nAll major browsers nowadays support dark themes …","href":"http://localhost:1313/blog/2021/dark-theme-redesign/","tags":["website","design","javascript"],"title":"Website dark theme"},{"categories":["Linux"],"content":"I have a Wacom Intuos graphics tablet for my occasional drawing and signing. By default, the tablet area is mapped to the whole screen area, making it almost unusable if you are using two or more monitors, as your drawing application of choice (Krita in my case) usually resides in one display only.\nWell, turns out there\u0026amp;rsquo;s a very easy way to map the tablet to a single display in Linux with xinput. But first, we need to find out the display we want to map the table to with xrandr.\n$ xrandr …","href":"http://localhost:1313/blog/2021/map-wacom-one-screen/","tags":["wacom","drawing","linux"],"title":"Map Wacom tablet to a single display"},{"categories":["Gaia Sky"],"content":"A while ago Erwan Leroy, a VFX professional and trainer, contacted me with some questions regarding the catalogs in Gaia Sky. Basically, he was trying to decode the binary format used in Gaia Sky to load the stars using a Python script. Of course, my documentation was lacking in that very aspect, so I walked him through the format and then improved the docs.\nToday, he has come back to me to share his results. Turns out he was trying to replicate an astrophoto with rotation star trails using his …","href":"http://localhost:1313/blog/2021/gs-plausible-nightsky/","tags":["open source","data","astronomy","gaia sky"],"title":"Using Gaia Sky data to mimic astrophoto"},{"categories":["Rust"],"content":"In my re-implementation of the Gaia Sky level-of-detail (LOD) catalog generation in Rust I have been able to roughly halve the processing time, and, even though I do not have concrete numbers yet, everything points towards a drastic decrease in memory usage as well. In this project, I need to read a metric ton of gzipped csv Gaia catalog files, parse and process them into a functional in-memory catalog with cartesian positions, velocity vectors, RGB colors, etc. Then I need use them to generate …","href":"http://localhost:1313/blog/2021/rust-memorymap/","tags":["rust","programming"],"title":"Memory mapped files in Rust"},{"categories":["Hardware"],"content":"A little over a year ago, in January 2020, I got myself a QNAP TS-351-2G 3-bay NAS in order to store all of my and my family\u0026amp;rsquo;s data in a fail safe RAID configuration. I opted for the somewhat unconventional 3-bay setup in an attempt to trade off limited physical space at home with storage capacity. I don\u0026amp;rsquo;t have much space in my living room for a big NAS, and the 2-bay options, albeit being very compact, are limited to RAID-1, where half of the space is used for storage and the other …","href":"http://localhost:1313/blog/2021/ts-351-review/","tags":["nas","qnap","storage","linux"],"title":"NAS review: QNAP TS-351-2G"},{"categories":["Old Blog"],"content":"The other day I was browsing through the Wayback Machine and I tried looking up if they had a copy of my old blog dimlight.wordpress.com, a blog I wrote during my second Erasmus exchange program stay in the University of Aberdeen, Scotland. Of course, they had several snapshots archived. The images and videos are missing, but the texts are intact, so I decided to re-publish verbatim copies of these old posts here.\nThey were initially published between the last quarter of 2006 and October of …","href":"http://localhost:1313/blog/2021/dim-light/","tags":["life","erasmus"],"title":"My old blog"},{"categories":["Linux"],"content":"If you usually develop your software without an IDE, it may come in handy to be able to run a custom command or two whenever a file or a group of files in the file system is modified. This post discusses entr, a small event notify test runner which might just be what you need to fill an inconvenient gap in your mouseless development environment.\nentr entr does just that; it watches files and whenever they change, it runs a command. It is super easy to use. It reads a list of files from the …","href":"http://localhost:1313/blog/2021/run-cmd-on-fs-change/","tags":["cli","programming"],"title":"Run a command when files change"},{"categories":["Rust"],"content":" Lately I\u0026amp;rsquo;ve taken an interest in the Rust programming language. I read the epub version of the Rust book over summer and found it quite well-written and overall interesting. Recently, I got myself a hard copy that sits on my desktop for quick queries, as I\u0026amp;rsquo;ve been re-implementing the Gaia Sky catalog generation in Rust. The reasons for this are varied, but basically they come down to hardware. We need to load a humongous amount of stars (~1.6 billion) into memory, our old server, …","href":"http://localhost:1313/blog/2021/rust-devenv/","tags":["rust","programming"],"title":"Mouseless Rust"},{"categories":["Linux"],"content":" At home, I have a scrawny HTPC called chimp in my living room connected to the TV \u0026amp;mdash;as I don\u0026amp;rsquo;t own a Smart TV for good reasons\u0026amp;mdash;. Even though I have a NAS in the network capable of serving media, I connected a dedicated external disk directly to chimp because my stock router is not the fastest around. Whenever I use the HTPC, I use it remotely from either my desktop, bonobo, or my laptop, simian. Sometimes I need to fetch torrents and download them to the disk connected to the …","href":"http://localhost:1313/blog/2020/transmission-cli/","tags":["linux","open source","torrent","pirate"],"title":"Transmission, a CLI torrent manager"},{"categories":["Linux"],"content":"I remember many years ago, when I was a Windows user, and even later after I made the switch to Linux, I always struggled to find the perfect music player that would fit my needs perfectly. From time to time I would fantasize about programming my own little, perfect, shiny music player program that would fit my needs perfectly like Cinderella\u0026amp;rsquo;s shoe. But I was nowhere near naïve enough to actually start the project, let alone finish it. I know how much time and effort it would take. Then I …","href":"http://localhost:1313/blog/2020/mpd/","tags":["linux","open source","fun","music"],"title":"A few words about MPD"},{"categories":["Privacy"],"content":"It\u0026amp;rsquo;s been a while since I started trying to decouple myself from big tech companies that sell my data to third parties, give them away freely to governments, or feed them to huge, unsupervised AI systems to target me better with ads \u0026amp;ndash; what is commonly known as degoogling. Today I\u0026amp;rsquo;m taking another step in this process by deleting my personal Twitter account. twitter.com/jumpinglangur is no more!\nI\u0026amp;rsquo;ll still be keeping the Gaia Sky twitter account around in order to inform …","href":"http://localhost:1313/blog/2020/out-of-twitter/","tags":["twitter","mastodon","privacy","peertube"],"title":"Bye bye Twitter (almost)"},{"categories":["Particle Physics Simulator"],"content":"I found some time to update the Particle Physics Simulator android application (version 3.7.4) in order to fix some bugs and add a hardcoded menu button, since terminals do not have a dedicated physical button these days. Additionally, my merge request to the F-Droid data repository was accepted, so now the app is also available via the F-Droid store.\nGet the app from F-Droid or the Play Store.\n","href":"http://localhost:1313/blog/2020/pps-fdroid/","tags":["android","programming"],"title":"Particle Physics Simulator available on F-Droid"},{"categories":["Life"],"content":"Tomorrow my parental leave officially starts, so I\u0026amp;rsquo;ll be off the grid for a little over a couple of months. I\u0026amp;rsquo;ll be back mid September with (hopefully) recharged batteries. In the mean time, have fun!\n","href":"http://localhost:1313/blog/2020/out-for-two-monts/","tags":["holydays"],"title":"Out for a couple of months"},{"categories":["Linux"],"content":"These days of coronavirus where a lot of people work from home the number of teleconferences per unit of time has skyrocketed. Most of us are forced to use video conferencing software of dubious privacy practices1 without having much say in the choice, but that is a story for another day. If you are like me and do not have an external webcam to plug into your PC, don\u0026amp;rsquo;t run off to the store just yet. There are solutions to make your Android smartphone act as a webcam that work really well. …","href":"http://localhost:1313/blog/2020/droidcam-setup/","tags":["webcam","phone"],"title":"Use smartphone as a  webcam"},{"categories":["Linux","Privacy"],"content":"Edit (2021-11-04): fix terminology mess-up: LUKS on LVM -\u0026amp;gt; LVM on LUKS Edit (2021-07-01): fix typo in GRUB_CMDLINE: cryptodevice -\u0026amp;gt; cryptdevice Edit (2020-06-16): use dd to create swap file instead of fallocate\nDisclaimer: some of the steps in the Arch Linux installation procedure change from time to time, so I would recommend checking out the awesome Arch Linux installation guide in the Arch wiki to get a fully up-to-date picture of the process.\nIt is well known that Arch Linux does not …","href":"http://localhost:1313/blog/2020/arch-encryption/","tags":["security","anonymity","archlinux","encryption","luks","dm-crypt","lvm"],"title":"Arch with LVM on LUKS"},{"categories":["Linux","Privacy"],"content":"If you are a qutebrowser user and care about privacy and anonymity, you may want to run qutebrowser using the tor network by default. Doing so is easy. This post documents how to set it up.\nFirst, bring up a terminal and install and enable/start tor (assuming Arch Linux with systemd):\npacman -S tor systemctl enable tor.service systemctl start tor.service Then, just edit the configuration of qutebrowser (usually ~/.config/qutebrowser/config.py) to use the tor network as a proxy:\nc.content.proxy = …","href":"http://localhost:1313/blog/2020/tor-qutebrowser/","tags":["security","anonymity","privacy","qutebrowser"],"title":"Tor with qutebrowser"},{"categories":["Privacy"],"content":"My degoogling process started a few months ago, and it included moving on from Gmail to a privacy-focused email provider, among many other actions. I surveyed the landscape and considered Proton Mail, Tutanota, Posteo, and a few others. Finally I settled with the Amsterdam-based Soverin.net, opened an account back in July 2019 and paid for a full year of service. What follows is the story of why I canceled my account yesterday in favor of another provider.\nThis post is a transcript of this post …","href":"http://localhost:1313/blog/2019/why-i-left-soverin/","tags":["email","privacy","provider"],"title":"My experience with Soverin.net"},{"categories":["Gaia Sky"],"content":" Today we are releasing a brand new version (2.2.0) of Gaia Sky with several major changes and new features. To sum up, github reports 1071 changed files, with 81672 additions and 31763 deletions. Gitlab displays a \u0026amp;ldquo;Too many changes to show\u0026amp;rdquo; banner, as their cap is at a 1000 files. This makes it by far the largest release ever, followed by version 1.5.0 in the summer of 2017.\nSo, what are all these changes? What are the new features? This post attempts to answer this questions in …","href":"http://localhost:1313/blog/2019/gaia-sky-220/","tags":["programming","opengl","release","version","english","gaia sky"],"title":"Gaia Sky 2.2.0"},{"categories":["Programming","Linux"],"content":"Lately, I have been kicking the dust off my C++ skills, and decided to start by learning to use a library which I have been eyeing for a while, ncurses. ncurses is a C library which lets you create text-based UI programs for the terminal, in the same fashion as the gif above. Basically, you can use the terminal to implement text-based user interfaces. Since I seem to have an obsession with snake games, I figured I\u0026amp;rsquo;d create a snake game for the terminal.\nThe project I\u0026amp;rsquo;m sharing today …","href":"http://localhost:1313/blog/2019/learning-ncurses/","tags":["snake","terminal","linux","ncurses","programming","c++"],"title":"Learning ncurses"},{"categories":["Gaia Sky"],"content":"Gaia Sky has a quite powerful Python scripting system which has gotten a revamp lately. The system exposes an API which can be used from Python scripts to interact with an instance of Gaia Sky running in the same machine (so far). But to understand where we are, we need to know where do we come from.\nWhere do we come from? Up to Gaia Sky version 2.1.7, we used Jython to run the scripts. Jython is a Java implementation of Python. With it, it is possible to run a Python interpreter inside the JVM …","href":"http://localhost:1313/blog/2019/gaia-sky-scripting/","tags":["scripting","python","gaia sky"],"title":"Scripting Gaia Sky"},{"categories":["Website","Design"],"content":"I\u0026amp;rsquo;ve once again changed the design of the site to make it cleaner, more simple and above all, less bloated. I\u0026amp;rsquo;ve removed a bunch of javascript code (for instance, MathJax is no longer loaded by the main template but by the actual pages that really need it). Also, I\u0026amp;rsquo;ve simplified the color palette settling on a black on white scheme with green for links and titles.\nOld (left) and new (right) design side-by-side. The new design is cleaner and more pleasant to the eye. The new …","href":"http://localhost:1313/blog/2019/less-bloat/","tags":["design","website","web","bloat","programming"],"title":"New simpler design"},{"categories":null,"content":"","href":"http://localhost:1313/posts-list/","tags":null,"title":"Posts list"},{"categories":["Linux"],"content":"Edit (2020-10-02): change termite to kitty due to font ligatures support.\nEdit (2020-06-01): change urxvt to termite, update info on qutebrowser with tor.*\nOverview In this post I\u0026amp;rsquo;m documenting the current (March 2019) system setup I use in my development machines. This has been converging for a long time already, and It will surely evolve in the future. However, right now, it works well for me. I use the machines mostly for development work (Gaia Sky, Gaia First Look, Ph.D., etc.). I also …","href":"http://localhost:1313/blog/2019/my-setup/","tags":["programming","scripts","i3wm","polybar","rice","qutebrowser","pass","neovim"],"title":"My Linux setup (as of 10/2020)"},{"categories":["Gaia Sky"],"content":"During the last months I have been working on a QOL improvement for Gaia Sky video production. Currently, Gaia Sky offers a couple of ways to persist and reproduce camera behaviours: scripting and camera paths.\nScripting offers a high level API which allows for the interaction and manipulation of the internal state. Conceptually, a running script is no different from a regular user. A script runs in its own thread and, like a user, interacts with Gaia Sky\u0026amp;rsquo;s core through the event manager, …","href":"http://localhost:1313/blog/2019/keyframe-based-camera-recorder/","tags":["programming","camera","opengl","astronomy","videos","gaia sky"],"title":"Keyframe-based camera paths"},{"categories":["Linux"],"content":"A couple of days ago I sumbled upon this video by Luke Smith where he presented a couple of scripts to display CPU, memory and temperature information in i3blocks. Since I use polybar due to it working much better in tandem with my dual-monitor setup with different DPIs, I decided I\u0026amp;rsquo;d adapt and change the scripts to work in polybar. Polybar already comes with memory, CPU and temperature modules by default, but they don\u0026amp;rsquo;t include a popup showing the top-consuming processes, which is a …","href":"http://localhost:1313/blog/2019/polybar-cpu-memory/","tags":["programming","scripts","i3wm","polybar","rice"],"title":"System monitoring polybar modules"},{"categories":["About"],"content":" Since you are already here, I think a short introduction is in order. My name is Toni Sagristà Sellés and I am an informatics engineer and hold a Ph.D. in Scientific Visualization and Astronomy and an M.Sc. in Astrophysics, Particle Physics and Cosmology. I like computer graphics and visualization, astronomy, photography (sometimes), snowboarding, playing and watching football, drawing horribly, playing with my kids, and occasionally gaming. I sometimes use the aliases langurmonkey and …","href":"http://localhost:1313/about/","tags":["welcome","home","about"],"title":"Well, hello there!"},{"categories":["Linux"],"content":"This is just a quick post to share my .dotfiles project. It contains the configuration files for most of the essential utils and tools I use in all my machines. These include the tiling window manager i3wm, the info bar polybar, the awesome qutebrowser, the text editor vim or the file manager ranger. Also, in the bin/ folder there are lots of scripts (most of them hacked together quickly) to do various tasks, like converting garimin fit files to the open gpx format or switching off the monitor …","href":"http://localhost:1313/blog/2019/my-dotfiles/","tags":["programming","git","i3wm","qutebrowser","dotfiles","rice"],"title":"Sharing my dotfiles"},{"categories":["Gaia Sky"],"content":"I\u0026amp;rsquo;ll shortly be moving the Gaia Sky repository from GitHub to GitLab (link here) due to the former being acquired by Microsoft.\nIf you have cloned the repository and wonder how to update your remote reference, here\u0026amp;rsquo;s what to do:\n$ cd path/to/gaiasky $ git remote set-url origin https://gitlab.com/langurmonkey/gaiasky That\u0026amp;rsquo;s all it takes. All pulls from now on should be directed to the gitlab repo.\n","href":"http://localhost:1313/blog/2018/moving-to-gitlab/","tags":["programming","projects","git","vcs","github","gitlab"],"title":"Moving Gaia Sky to GitLab"},{"categories":["Gaia Sky"],"content":"This time around we\u0026amp;rsquo;ve had a slightly longer development cycle so Gaia Sky 1.5.0 \u0026amp;lsquo;Jumbo Summer Release\u0026amp;rsquo; is here with a ton of new features, enhancements and bug fixes. Most importantly, we have essentially refactored the way star catalogs are handled, so that we can now stream data from disk when it is needed. Also, we\u0026amp;rsquo;ve been working hard to make better use of the GPU and we are proud to announce that we\u0026amp;rsquo;ve increased the performance fourfold while being able to …","href":"http://localhost:1313/blog/2017/jumbo-summer-release-gaiasky/","tags":["simulation","astronomy","astrophysics","gaia","opengl","gaia sky"],"title":"Gaia Sky jumbo summer release 1.5.0"},{"categories":["Gaia Sky"],"content":"Gaia Sky is here again with a brand new release packed with new features and bug fixes. Here are the most important:\nNew spacecraft camera mode \u0026amp;ndash; Game on! New lens glow effect. Added brightness and contrast controls. Improved search functionality. Updated textures. Added optional crosshair in focus mode. Implemented 360° mode for 360 VR videos and panormas. See gallery here. Brand new documentation in readthedocs.org. Edit: since then the documentation has moved to …","href":"http://localhost:1313/blog/2016/gaiasky-version-102/","tags":["simulation","astronomy","astrophysics","gaia","opengl","gaia sky"],"title":"New release of Gaia Sky"},{"categories":["Website"],"content":"The idea of ditching both my web hosting provider and Drupal has been at the back of my mind for a few months.\nBear with me. Since about 2011 I have been maintaining this website using the cheapest hosting tier my hosting offers \u0026amp;ndash; At least it was the cheapest at the time I got it. They call it The Essential and it costs over 300 bucks for 2 years. It is not a lot, but it is definitely too much for my purposes of hosting a small blog where I provide occasional updates on my projects, my …","href":"http://localhost:1313/blog/2016/moving-to-hugo/","tags":["programming","projects","website","web","static site generator","drupal","hugo","ipage"],"title":"Moving to Hugo"},{"categories":["Academic"],"content":"Ph.D. Thesis Visualization of Astrometric and Astrophysical Data \u0026amp;mdash; A. Sagristà \u0026amp;ndash; 2024. Published as Open Access in Heidelberg University library document server. 10.11588/heidok.00034797. Peer-reviewed Papers \u0026amp;mdash; First Author Visual Analysis of the Finite-Time Lyapunov Exponent \u0026amp;mdash; A. Sagristà, S. Jordan, F. Sadlo \u0026amp;ndash; 2020, Computer Graphics Forum, 10.1111/cgf.13984 Gaia Sky: Navigating the Gaia Catalog \u0026amp;mdash; A. Sagristà, S. Jordan, T. Müller, F. Sadlo \u0026amp;ndash; 2019, …","href":"http://localhost:1313/papers/","tags":["academic","papers"],"title":"Papers and Academic material"},{"categories":["Resume"],"content":" Toni Sagristà Sellés Software Engineer, Ph.D. in Scientific Visualization and Astrophysics [PDF version] Cell: +49 (0)17683798752 Email: me@tonisagrista.com PGP: 0x2FD2A59C1D734C1F Born: August 5, 1983 I am a software engineer with a strong interest in computer graphics, scientific visualization, data science and astrophysics. I\u0026#39;m currently doing research in scientific visualization. I am fascinated by the physics of nature and have a strong interest for physics simulations. I have lately …","href":"http://localhost:1313/resume/","tags":["resume"],"title":"Résumé"},{"categories":["Gaia Sky"],"content":"Today, 26 September 2016, the Astronomy Picture of the Day (APOD) features a video we have prepared with Gaia Sky at the ARI/Uni Heidelberg. The video itself shows a flight from outside of our Milky Way galaxy to the Sun and then a travel through the Solar System towards the vicinity of the Earth, displaying in this journey a little over 600.000 stars from the TGAS part of Gaia Data Release 1.\nThe video caption wanders a bit off topic, for it mentions neither Gaia DR1 nor TGAS, the main points …","href":"http://localhost:1313/blog/2016/astronomy-picture-day-features-gaia-sky/","tags":["simulation","astronomy","astrophysics","gaia","opengl","apod","gaia sky"],"title":"Gaia Sky in APOD"},{"categories":["Gaia Sky"],"content":"With Gaia Data Release 1 in mind, we have prepared a few videos with flights through the TGAS catalog and generally showcasing Gaia Sky.\nCheck out the playlist:\n","href":"http://localhost:1313/blog/2016/gaia-videos/","tags":["gaia sky","simulation","astronomy","astrophysics","gaia","opengl","videos"],"title":"Gaia videos"},{"categories":["Gaia Sky"],"content":"Last September 14 the first Gaia catalog, Gaia Data Release 1, was made public. To celebrate the occasion, we also released version 1.0.0 of our virtual Universe software, Gaia Sky. This time around, the software comes with big improvements and lots of new features, the most prominent of which is the addition of the TGAS catalog, a part of Gaia DR1 which contains 3D positions for approximately 2 million objects. Check out the release trailer.\nHere is the changelog. As always, for a full list of …","href":"http://localhost:1313/blog/2016/first-version-gaia-sky-released-conjunction-gaia-dr1/","tags":["simulation","astronomy","astrophysics","gaia","opengl","gaia sky"],"title":"First version of Gaia Sky released in conjunction with Gaia DR1"},{"categories":["Gaia Sky"],"content":"Today I\u0026amp;rsquo;m releasing version 0.800b of Gaia Sky, probably the last beta version before version one, which will come in late summer with GDR1 (Gaia data release 1).\nThis time around we bring on loads of improvements, bug fixes and new features. Here is a comprehensive change log:\nReimplemented star render algorithm, now all stars are shaded as points in the GPU. New Milky Way rendering with 40K particles and 100 nebulae. Three graphics quality settings, low, normal and high, which have an …","href":"http://localhost:1313/blog/2016/gaia-sky-hits-version-0800b/","tags":["simulation","astronomy","astrophysics","gaia","opengl","gaia sky"],"title":"Gaia Sky hits version 0.800b"},{"categories":["Gaia Sky"],"content":"The Gaia Sky software, former Gaia Sandbox, (and in particular its WebGL ports) has been chosen by ESA to be Gaia Image of the Week. The WebGL version includes a spinoff \u0026amp;ndash;called A Window to Gaia: The Focal Plane \u0026amp;ndash; which displays in real time the Tycho-2 stars that are being observed by Gaia. The WebGL ports have problems with mobile browsers and also with Safari, but they should work well with Google Chrome and Firefox (the former is significantly faster than the latter).\nHere is the …","href":"http://localhost:1313/blog/2016/gaia-sky-gaia-image-week/","tags":["simulation","astronomy","astrophysics","gaia","opengl","gaia sky"],"title":"Gaia Sky is Gaia Image of the Week"},{"categories":["Gaia Sky"],"content":"I have been working hard these last couple of months and today I\u0026amp;rsquo;m proud to announce the release of the second beta version of the Gaia Sandbox, the open source, free, astronomy sandbox focused on the Gaia mission.\nIt comes with lots of bug fixes, features and improvements. But do not believe me, check out the following list of new stuff for yourself:\nLots of bug fixes. Internationalised (EN, DE, ES, CA). Interface overhaul. New theme - Dark-big. Stereoscopic mode. Gamepad support. New …","href":"http://localhost:1313/blog/2015/lots-new-exciting-stuff-gaia-sandbox-0704b/","tags":["simulation","astronomy","astrophysics","gaia","opengl","gaia sky"],"title":"Gaia Sandbox version 0.704b"},{"categories":["Gaia Sky"],"content":"Today we have published the first public BETA version (v0.703b) of the Gaia Sandbox, a real-time, 3D, astronomy visualisation application that runs on Linux, Windows and MacOSX systems. Its main purpose is to serve as an outreach platform to ESA\u0026amp;rsquo;s Gaia mission, and it is free (as in freedom and gratis). It is also open source under the LGPL, so go try it out!\nThe Gaia Sandbox is a real time simulation of Gaia, the Solar System and the Galaxy with advanced graphics and more than 100.000 …","href":"http://localhost:1313/blog/2014/released-first-beta-version-gaia-sandbox/","tags":["astronomy","simulation","gaia","opengl","gaia sky"],"title":"Gaia Sandbox goes public"},{"categories":["Projects"],"content":" This is a wee graphical application to visualise the movement of the celestial pole (J2000.0) with respect to the ICRS due to the precession and nutation of the Earth. There is a basic GUI which lets you switch between north and south pole and lets you control the time speed. The program uses the IAU2000 equations for the two sets of angles and yields good results for at least a span of 6000 years. It also features the latitude lines and a background with some of the most important Hipparcos …","href":"http://localhost:1313/projects/celestial-pole/","tags":["astronomy","java","astrophysics","programming"],"title":"Celestial Pole Motion"},{"categories":["Particle Physics Simulator"],"content":"Turns out the German physics educational journal Physik in unserer Zeit (Physics in our time) published a thorough review of one of my Android apps, the Particle Physics Simulator back in January 2014. One of the authors of the article, Jan-Philipp Burde, contacted me a while back to let me know that he was preparing the article and to ask some information on how the code works, which I gladly provided. Then, he kindly contacted me again when the article was published in the January 2014 issue …","href":"http://localhost:1313/blog/2014/physik-unserer-zeit-reviews-particle-physics-simulator/","tags":["physics","programming"],"title":"Review of Particle Physics Simulator"},{"categories":["Projects"],"content":" This is my modification of the HTML5 snake game seen in thecodeplayer.com. You can change all the start parameters using the input form below, just remember to hit r to reload so that the new values take effect. It is very customizable, try it!\np - pause game\u0026amp;nbsp;\u0026amp;nbsp;\u0026amp;nbsp;\u0026amp;nbsp;r - restart game Options Square Circle Width (in blocks): Height (in blocks): Size of blocks (px): Background colour: Snake colour: Food colour: Velocity (higher is slower): Below is the javascript code, if you need …","href":"http://localhost:1313/projects/snake/","tags":["snake","html5"],"title":"HTML5 Snake Game"},{"categories":["Programming"],"content":"Lately, I have been messing around with a snake game written in HTML5+js. A great deal of parameters can be modified in real time using an input form in the same page, such as the width and length of canvas, cell shape, background colour, food colour, snake colour and the speed of the game. Also, I posted the full javascript code.\nIf you are interested, you can check the results here.\n","href":"http://localhost:1313/blog/2013/html5-snake-game/","tags":["html5","game"],"title":"Messing around with HTML5"},{"categories":["Photography"],"content":"Today I\u0026amp;rsquo;d like to drop some photos of my recent holidays to Nepal here. All of these were taken using a Canon 40D with the Canon 28-105 USM II f3.5-4.5. I decided to leave my other two lenses home (the wide angle lens Sigma 10-20 1:4-5.6 EX DC HSM and the standard Canon EF 50mm f/1.8 Mk II) because of the philosophy of the travel. We were mostly a backpacker group and we\u0026amp;rsquo;d be moving around quite a lot, trekking the Himalayas and going to the jungle, so I figured the extra weight …","href":"http://localhost:1313/blog/2013/some-photos-nepal/","tags":["nepal","photos","camera"],"title":"Photos of Nepal"},{"categories":["Projects"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Disclaimer This is a work-in-progress. The master branch is up to date with the latest development and may very possibly crash. Use it at your own risk. Repository: https://codeberg.org/langurmonkey/rts-engine\nThis is an RTS engine project that I used to enjoy working on. It is a testing sandbox and does not have much focus.\nScreenshot of the RTS engine running. I started playing around with the idea as a time killer some years ago, kicking off the development with a fast version of …","href":"http://localhost:1313/projects/rts-engine/","tags":["rts","java","game","project"],"title":"RTS engine"},{"categories":["Libgdx"],"content":"A couple of posts ago I mentioned I would write a few lines about my experience with the migration of my RTS engine from Slick to Libgdx and that\u0026amp;rsquo;s what I\u0026amp;rsquo;ll do in this post. I\u0026amp;rsquo;ll be talking very lightly on some issues such as the code structure, the rendering process, the camera, etc. If you need a starting tutorial please refer to the official documentation, this is not what you are looking for. I\u0026amp;rsquo;m just trying to give my impressions in the migration process I had to …","href":"http://localhost:1313/blog/2013/slick-libgdx/","tags":["libgdx","programming","java"],"title":"From Slick to Libgdx"},{"categories":["Website","Design"],"content":"As you may have noted, I updated the look and feel of the website to a more sober, greenish and polished design. The moon in the header has been replaced by a jumping monkey, which is always likeable. Regarding performance, this new site has less and smaller CSS files and less images and therefore it loads faster. Additionally, it uses HTML5, which is good. I also took the opportunity to update to the latest version of drupal and make use of the newer ZEN base theme.\nHere there\u0026amp;rsquo;s a …","href":"http://localhost:1313/blog/2013/new-web-design/","tags":["design","programming","web"],"title":"New web design"},{"categories":["RTS engine"],"content":"Today I want to introduce a very different piece of software I have been putting together lately. It is a RTS (real time strategy) engine. I started playing with the idea as a time killer some years ago, kicking off the development with a fast version of the A* pathfinding algorithm backed not by a grid (as usual) but by a quadtree. Quadtrees make pathfinding super-fast because of their hierarchical division of space and their adaptive partition sizes. Even though I used visibility graphs to …","href":"http://localhost:1313/blog/2013/rts-engine-preview/","tags":["programming","game"],"title":"RTS engine preview"},{"categories":["Particle Physics Simulator"],"content":"The new version 3.6 of the Particle Physics Simulator is now out with customizable star sprites and fading tails. The new tail graphics have an impact on performance with older devices (just like mine), but should be handled with minor fps drops by newer processors. However, if you encounter problems you can disable tails or set them to \u0026amp;ldquo;short length\u0026amp;rdquo; in the preferences screen.\nAs always, get it from F-Droid or the Play Store.\n","href":"http://localhost:1313/blog/2013/new-version-36-different-star-sprites-and-fancy-tails/","tags":["android","programming"],"title":"Released version 3.6"},{"categories":["Particle Physics Simulator"],"content":"I just published the latest version (3.5) of the Particle Physics Simulator, with a fancy new feature that allows for different-sized particles to be shot into the simulation. You\u0026amp;rsquo;ll notice a frame with a size-changing particle when you hold your touch down for a shoot. The size of that particle at the moment you take the shot is the size of the particle being created. Easy, ain\u0026amp;rsquo;t it?\nAdditionally, there are a number of other improvements and bug fixes, go discover them yourself!\n","href":"http://localhost:1313/blog/2012/particles-different-sizes-v35/","tags":["android","programming"],"title":"Particles of different sizes in v3.5"},{"categories":["Particle Physics Simulator"],"content":"The new version of the Particle Physics Simulator (v3.4) is now out. This version brings us the capability to load and save simulations to XML files. Now you can export your simulation to a file and load it later on.\nLoad and save buttons on the menu. In order to save the current simulation, just open the menu and then tap the \u0026amp;ldquo;Save file\u0026amp;rdquo; entry. In the file dialog that pops up select the folder you want to save your simulation and the name of your new file if you want to create one, …","href":"http://localhost:1313/blog/2012/load-and-save-simulations-version-34-particle-physics-simulator/","tags":["android","programming"],"title":"Load/save feature in version 3.4"},{"categories":["Particle Physics Simulator"],"content":"New friction feature has been added to the Particle Physics Simulator v3.3 for Android. Now, particles can be set to have friction so that their velocity will decrease over time at a steady rate. You can make them behave like snooker balls! Also, this version tunes particle tail lengths and adds some interesting performance tweaks that should make it run smoother in handicapped devices.\n","href":"http://localhost:1313/blog/2012/friction-added-v33-particle-physics-simulator/","tags":["android","programming"],"title":"Friction added in version 3.3"},{"categories":["Particle Physics Simulator"],"content":"I just released the new bugfix version (3.2.4) which fixes the following bugs (all of them reported by Keith):\nRepel touches were off in big simulation area mode. Zooming multitouch acted as a single touch when first finger was lifted. Particles got stuck on wall ends. Additionally, the maximum number of walls has been increased from ten to fifteen. As usual, you can download it from the Google Play Store.\n","href":"http://localhost:1313/blog/2012/new-bugfix-version-particle-physics-simulator-android-v324/","tags":["android","programming"],"title":"Bug fixes and more in 3.2.4"},{"categories":["Particle Physics Simulator"],"content":"The new feature version 3.2 of the Particle Physics Simulator brings some new exciting features. I\u0026amp;rsquo;d like to thank Keith for some cool suggestions. Let\u0026amp;rsquo;s see the new features:\nTail length can now be set to short, medium and long. A short tail increases performance but ain\u0026amp;rsquo;t that cool. Useful for slow devices, mostly. Static particles can now be created. The shooting button now cycles through particle, antiparticle and static particle. They are displayed with a cross. Gravity …","href":"http://localhost:1313/blog/2012/new-feature-version-v32-particle-physics-simulator-android/","tags":["android","programming"],"title":"Version 3.2 out now"},{"categories":["Particle Physics Simulator"],"content":"I just made a new video of the newest version of Particle Physics Simulator (3.1.4) in action running on my Motorola Milestone. The phone is kind of old for today\u0026amp;rsquo;s standards (600 MHz Cortex-A8 CPU, PowerVR SGX530 GPU, 256MB RAM) but the frame rate is stable at about 30 FPS regardless of the number of particles. I\u0026amp;rsquo;d say the performance is fine for the first time since the migration to OpenGL ES in v2.0.\nEnjoy it!\n","href":"http://localhost:1313/blog/2011/particle-physics-simulator-314-action/","tags":["android","programming"],"title":"Particle Physics Simulator 3.1.4 in action"},{"categories":["Website"],"content":"03/2019 - This post is long outdated, as the design I\u0026amp;rsquo;ve been using for years is responsive and there\u0026amp;rsquo;s no need anymore for mobile-specific verisons\nFinally the mobile version of this site is up and ready to go. It features most of the characteristics of the full site and also most of the functionality. Hope you find it useful when browsing from your handheld devices. Controls to switch forth and back between versions are provided. If you want, give it a try:\nMobile version Desktop …","href":"http://localhost:1313/blog/2011/we-have-mobile-version/","tags":["website"],"title":"We have a mobile version!"},{"categories":["Particle Physics Simulator"],"content":"The new version of the Particle Physics Simulator for Android, the version 3.1.2, has just been released to the Android Market. Among the several new features it contains, I\u0026amp;rsquo;d like to single out the possibility to change the mesh density in the Particle-Mesh mode, and also the option to display the mesh points. Mesh density values range from 0 to 3, being 0 the less dense and 3 the denser. Increasing the mesh density means more mesh points scattered over the simulation area, where actual …","href":"http://localhost:1313/blog/2011/particle-physics-simulator-31-just-released/","tags":["android","programming"],"title":"Particle Physics Simulator 3.1 just released"},{"categories":["Particle Physics Simulator"],"content":" The new version 3.0 of the Particle Physics Simulator has been out for almost a month now, but I just had no time to write a post about it. I guess most of you already got the automatic update via the Android Market. The most notorious feature added is the incorporation of a new force calculator method which is selectable from the preferences screen. The force calculator method is the first of two steps in any simplified n-body code, where forces acting on each particle are calculated. Then, …","href":"http://localhost:1313/blog/2011/particle-mesh-version-30-particle-physics-simulator/","tags":["android","programming"],"title":"Particle-Mesh force calculator"},{"categories":["Particle Physics Simulator"],"content":"Here are some videos of the various versions that have been released of the Particle Physics Simulator (formerly called N-Body Simulator) for Android.\nVersion 3.7.3 Version 3.1.4 ### Version 3.0 ### Version 2.2.1 ### Version 2.0 ### Version 1.0 ","href":"http://localhost:1313/pps/videos/","tags":["videos"],"title":"Particle Physics Simulator videos"},{"categories":["Astronomy"],"content":"Today I want to talk a bit about an initiative that I\u0026amp;rsquo;ve been following for quite a long time now and I think deserves some attention. I\u0026amp;rsquo;m talking about Astronomy Cast. Astronomy Cast, in their own words, takes a fact-based journey through the cosmos as it offers listeners weekly discussions on astronomical topics ranging from planets to cosmology. Fraser Cane and Dr. Pamela Gay elaborate a high-quality podcast each week, where they discuss several astronomy, astrophysics, cosmology …","href":"http://localhost:1313/blog/2011/astronomy-cast-just-had-tell-you-about-it/","tags":["podcast","astronomy"],"title":"Astronomy Cast, just had to tell you about it"},{"categories":["Particle Physics Simulator"],"content":"The new version of the Particle Physics Simulator for Android is now out in the Market. The main new feature is the addition of background images to the simulations. Here\u0026amp;rsquo;s how they work:\nFirst, go to Settings and scroll down to the Background Image entry. Then, click on it and select the image you desire from your gallery/external storage. And yup, that\u0026amp;rsquo;s all! The images are conveniently cropped and scaled so that OpenGL ES can handle them. OpenGL ES only accepts square textures …","href":"http://localhost:1313/blog/2011/released-version-26-particle-physics-simulator-android/","tags":["android","programming"],"title":"Released version 2.6 of Particle Physics Simulator for Android"},{"categories":["Particle Physics Simulator"],"content":"I just submitted a new version (v2.5.5) of the Particle Physics Simulator to the Android Market, so you should be receiving it shortly in your devices. This is a bugfix version:\nFixed bug that prevented simulations in merger collisions mode from working properly. Thanks to Neil for reporting. Some minor performance improvements have been added that should make the simulator run more smoothly. You can download the application from the Market or using the provided QR code.\n","href":"http://localhost:1313/blog/2011/new-version-255-particle-physics-simulator-out/","tags":["android","programming"],"title":"New version 2.5.5 of Particle Physics Simulator out"},{"categories":["Particle Physics Simulator"],"content":"Back to Particle Physics Simulator page\nv3.8.2 (06/10/2025) Add margins to bottom buttons, zoom-pan layout, velocity slider, and FPS counter. This prevents the UI from being obfuscated by the navigation bar in some devices. v3.8.1 (02/10/2025) Update target SDK to 36 Upgrade to Gradle 8.13 Fix issues with build v3.7.4 (23/04/2020) Fix double launcher issue Rename app to \u0026amp;ldquo;ParticleSim\u0026amp;rdquo; Fix build targetSdk issues v3.7.3 (21/04/2020) Increase max number of walls from 16 to 5 Increase max …","href":"http://localhost:1313/pps/changelog/","tags":["projects","android","changelog"],"title":"Changelog"},{"categories":["General"],"content":"This is the first post of my new website. I will use it to discuss my various projects current and future.\nHope you enjoy it ;)\n","href":"http://localhost:1313/blog/2011/hello-world/","tags":["welcome","hello world"],"title":"Hello world"},{"categories":["N-Body Live Wallpaper"],"content":" This is a retired, unmaintained app!\nThe N-Body Live Wallpaper is an application for Android (v2.1+) powered devices that enables the user to have a particle zoo of gravity interactions as a home screen wallpaper. The application is heavily based on the first version fo the Particle Physics Simulator, but adapted to suit a live wallaper needs. Features:\nReal n-body simulation, pure gravitational interactions between particles. Allow or not physically realistic collisions and mergers between …","href":"http://localhost:1313/projects/nblw/","tags":["android","physics","simulator","n-body"],"title":"N-Body Live Wallpaper"},{"categories":["Particle Physics Simulator"],"content":" The Particle Physics Simulator is a physics application for Android devices (v2.2+) in which real gravitational systems of particles can be created, simulated and interacted with in real time. It is an N-body particle simulator where the behaviour of the system is driven only by each particle\u0026amp;rsquo;s gravity and its interaction with all the other particles in it. It is turning more into a physics playground lately though, with the addition of accelerometer support, elastic collisions, ability …","href":"http://localhost:1313/projects/pps/","tags":["android","physics","simulator","n-body"],"title":"Particle Physics Simulator"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. At last the pictures of Japan are up and public. I know it took more than expected, but I’ve been kind of busy arranging some priority issues like the new job or our fancy super good-looking brand-new flat (yes, we finally got the long desired and proclaimed new flat in Barcelona!!). Well, lets not get off-topic… For those of you who may want to check the …","href":"http://localhost:1313/blog/2007/dimlight-19/","tags":["travel"],"title":"oldblog: Finally, Japan photos"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. The time to leave has come again. I’m leaving in three hours to Madrid, to take there an Aeroflot plane to Moscow, spending about twelve hours in the city to then take another flight to Tokyo, where Hokuto and Ikuya should be waiting for us. As I’m in a kind of hurry now, just want to say “see you later”, and remember, I’ll post the pictures of the trip as soon …","href":"http://localhost:1313/blog/2007/dimlight-18/","tags":["travel"],"title":"oldblog: Leaving in a few hours"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. Hello, I’m back again, so dont get confused if you see me around in Barcelona or Arenys! After coming back I can confirm what I expected: the thing I miss the most from Aberdeen are the long football afternoons we spent in Seaton (well, that and cheap deals involving Guinness or any other kind of beer in the Watering Hole). I’ve had quite a nice time indeed and …","href":"http://localhost:1313/blog/2007/dimlight-17/","tags":["erasmus"],"title":"oldblog: Final report and some other issues"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. Finally, someone decided to put some light of truth on a story that has been manipulated over and over, again and again. Here is the true story of Jesus Christ. Enjoy!\n","href":"http://localhost:1313/blog/2007/dimlight-16/","tags":["videos"],"title":"oldblog: The true story"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. No us perdeu aquest video, tota una troballa. És fresc, fa estiu, i la lletra és simplement magistral. Verigut!\n","href":"http://localhost:1313/blog/2007/dimlight-15/","tags":["music"],"title":"oldblog: VERIGUT"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. Finally I’m done with the coding - I’m posting some screens so that u can feel what the project looks like. Maybe I’ll upload the whole application in the future…\n","href":"http://localhost:1313/blog/2007/dimlight-14/","tags":["erasmus"],"title":"oldblog: Screenshots"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. Woha, it’s been a long time since the last post… Anyway, this August I’m going definately to Japan, we’ve already got the tickets for a moderate price, and we’ve got Hokuto and Ikuya there waiting for taking us to a trip around the countryside and the most important cities, both traditional and modern Japan. Karaoke nights full of sake and sapporo, meals of …","href":"http://localhost:1313/blog/2007/dimlight-13/","tags":["travel"],"title":"oldblog: From Aberdeen 2 Japan"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. These days after the Highlands trip I’m quite idle and I’ve had time to work on the project again. For the moment it fits the scheduling and I could say it’s going pretty well. Here’s a small screenshot so u can feel what it looks like by now. (Click on image for a larger display).\n","href":"http://localhost:1313/blog/2007/dimlight-12/","tags":["erasmus"],"title":"oldblog: The project"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. Hem tornat ja de fer el guiri per les Highlands. Pràcticament hem fet tot el nord-oest d’escòcia, sense deixar-nos Stirling, Oban, Fort William, Skye, Kyle of Lochalsh, Inverness… Ha estat un viatge impressionant amb paisatges magnífics. Senzillament no es pot descriure amb paraules! Si voleu saber més feu una ullada a les noves fotos del viatge.\nSalut!\n","href":"http://localhost:1313/blog/2007/dimlight-11/","tags":["erasmus"],"title":"oldblog: Guiri"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. So I’m finally settled down in Scotland. I went today to buy a football so that we can play whenever we feel like, without having to ask the others for a proper ball. Well, anyway, Im posting to tell u about whats happening in the upcoming week. A friend of my hometown, Oriol, is coming some days to Aberdeen to visit me and to hav a quick look at Scotland, so …","href":"http://localhost:1313/blog/2007/dimlight-10/","tags":["erasmus"],"title":"oldblog: What's next - Highlands"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. Llegeixo la premsa esportiva on-line i quedo astorat veient que absolutament tots els diaris de barcelona (Sport, ElMundoDeportivo, El9, Avui…) reprimeixen i piquen els dits a Eto’o per les seves delcaracions d’ahir. No sé si sóc jo l’extrany, però, com jo ho veig des de la llunyania, Eto’o té tota la raó del món quan diu que ell sempre ha estat amb el grup, a …","href":"http://localhost:1313/blog/2007/dimlight-09/","tags":["erasmus"],"title":"oldblog: Eto'o, estic amb tu!"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. Yesterday I went to a house party and after that, I met some Catalan and Spanish people and we went out downtown, around the Union Street. We actually went to a club called The Priory, in Belmont Street. This far everything looks normal. But there is a small detail you have to pay attention to. The Priory is located literally inside a church. It seems like it is …","href":"http://localhost:1313/blog/2007/dimlight-08/","tags":["erasmus"],"title":"oldblog: The Priory"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. Ahir al migdia vaig jugar el primer partit de futbol des que he arribat a Aberdeen. Feia un fred que pelava (jo diria que estavem al voltant dels -1ºC). Vam ser unes 24 persones, gairebé tots estudiants internacionals, així que vam fer dos equips de 12. Un cop a Seaton Park ens vam vestir de curt (quin fred, Déu meu!!) i vam començar a jugar una cosa similar al …","href":"http://localhost:1313/blog/2007/dimlight-07/","tags":["erasmus"],"title":"oldblog: Futbol i neu"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. Here goes my new address, which is meant to be permanent till I leave Aberdeen on June:\nToni Sagrista Room 121F Keith House Don Street Aberdeen AB24 1WU ","href":"http://localhost:1313/blog/2007/dimlight-06/","tags":["erasmus"],"title":"oldblog: New and permanent address"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. So finally I could swap rooms with Kunal. It’s been quite a hard task to accomplish, since there’s a lot of bureaucracy for such an easy thing as well. But let’s start at the beginning. Kunal is an indian guy who arrived at Scotland just one day after I did, and he was very close to the indians of my former flat. This flat was actually occupied by three indians …","href":"http://localhost:1313/blog/2007/dimlight-05/","tags":["erasmus"],"title":"oldblog: Settling down"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. Finalment he aconseguit superar amb èxit el caos i la desorganització d’aquesta universitat els 2 primers. He tingut força problemes per gairebé tot. Primer, per a registrar-se com a estudiant i aconseguir un compte per poder utilitzar internet -cosa extremament simple a Reading- he hagut de recorrer d’un edifici a un altre per després tornar al primer durant …","href":"http://localhost:1313/blog/2007/dimlight-04/","tags":["erasmus"],"title":"oldblog: Els primers dies"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. Well, everything is set, my second erasmus experience is about to start. During this week I’ve been arranging and fixing some pending tasks I had pulled apart, mostly some erasmus paperwork. And now it is time to say farewell to everyone. For example, yesterday we had dinner with the work colleagues in a comfortable, warm restaurant in Gracia district called La …","href":"http://localhost:1313/blog/2007/dimlight-03/","tags":["erasmus"],"title":"oldblog: Time has come"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. The picture below shows a Google Earth screenshot of the Hillhead Halls zone in Aberdeen. This is where I’ll be living from the end of January on and for a little more than four months. I’ve put some numbers on it to point out some interesting findings:\nThese are the Hector Boece halls. One of these is supposed to be my shared flat. Football pitches. As I can …","href":"http://localhost:1313/blog/2006/dimlight-02/","tags":["erasmus"],"title":"oldblog: Hillhead"},{"categories":["Old Blog"],"content":" \u0026amp;nbsp;\u0026amp;nbsp;Notice This is a verbatim copy of a post made in my old blog dimlight.wrodpress.com, included here for archiving purposes. Good morning, bon dia, bonjour, guten tag, buon giorno, goddag, hyvää päivää, konnichi wa, habari gani, buenos días, prynhawn da!\nThis is the first post of this modest blog and hopefully it won’t be the last ;). Gonna introduce myself. Im a common guy holding a common life in a still common country. Im engineer in informatics (or almost) by the Faculty of …","href":"http://localhost:1313/blog/2006/dimlight-01/","tags":["life"],"title":"oldblog: Starting to see the light"},{"categories":null,"content":" ","href":"http://localhost:1313/search/","tags":null,"title":"Search"}]