I find when I get lost in a project, I’ll neglect this blog, sometimes for months at a time. In this case, that project is AR Mobile Robotics, which I’ll cover later, with a bit of freelancing on the side. What happens is that I’ll reach a point where I’ve got several different things at about 90% completion, and I’ll tell myself “I’ll write a blog when I finish,” Then I get stuck in an endless loop “just one more feature.”
Now that Rachel has lapped me, twice, on the blog-writing front, I decided I’d finally get myself caught up. As you may have noticed by now, we are still living in the Basque Country, now starting year three of our residency. Before I get into the nerdy section of my post, here are a few of my local highlights since last October.
The Alhóndiga (Askuna Zentroa)

Those of you who speak a little Castellano may note that alhóndiga is kind of a funny word for a building, as it sounds a lot like the Spanish word for meatball. During our guided tour at said location, even the Andalucian tourist who had joined us had to ask what exactly it meant. The guide responded that it is synonymous with the more common term almacén, which essentially translates to a granary or warehouse. In the case of the Bilbainitos, the alhóndiga was where they stored there wine and cheese.


Nowadays, as part of Bilbao’s urban renaissance and development of the Indautxu neighborhood, the alhóndiga has been converted by the city into the the Azkuna Zentroa, which is a cultural center, coworking and meeting space, and gymnasium. It is, in fact, one of the locations that is commonly recommended in tourism guides of Bilbao due to its famous columns and terrace views. And yet, it took us two years before we made it here.
Basajauna
Rachel covered Basajauna in one her previous posts, if you scroll down to the section on Pinueta you can read a bit about his origin and our hike through the park in Leioa. For my part, I captured the sign on the right, covering his story in both Euskara and Castellano.


Even more on brand, I captured my very own photogrammetry model of the giant, which was compiled with help from Polycam. If I’ve done my embedding properly, you should be able to see for yourself in the frame below.
Tractor Protest
It’s practically a daily occurence that there is a maní (short for manifestación, meaning protest or rally) in central Bilbao, and since we live within earshot of the ayuntamiento (city hall), we usually hear it from our windows. January 28 was fairly unique among these, as a large group of farmers arrived to protest the European Union’s agreement with Mercosur to import South American livestock products. We stepped outside to find a parade of tractor’s lined up along the Gran Vía, with their ultimate destination being the plaza in front of Teatro Arriaga.



Carnavales
Las Carnavales were the first festival that we experienced after moving to Bilbao full-time in early 2024. It is peak Basque-silliness, including a literal carnival complete with an octopus-shaped merry-go-round, and locals of all ages going out in cheap costumes. This year, it poured rain for almost the entire time, which we appreciated, since it limited the repetitive noise-making from said merry-go-round. The rain also limited my photo taking. We did, however, take in the ritual burning of the sardine on the last day.

Now that I’ve got the fun and interesting travel content out of the way, lets switch back to a slew of geeky engineering projects that I’ve been working on over the last few months.
AR Mobile Robotics

I’ve posted a couple of times in the past year about about my personal project, called ARMOR for “Augmented Reality Mobile Robotics.” Most recently, last July, I posted about assembling a demo app with a BoE Bot as a proof-of-concept for running Google DeepMind’s MuJoCo (Multibody Joints and Contact) inside of a native SwiftUI app on iPhone. Getting MuJoCo running, was, in my opinion, a huge step toward being able to run legitimate, professional-grade multibody simulations on a mobile device, which engineers from a decade or so may have thought impossible.
If you follow me on LinkedIn, you may have seen me posting the a lot more frequently over the last couple of months, as ARMOR is nearing readiness for public release. Somewhere along the line, I heard that posting every day makes the LinkeIn algorithm more likely to pick one up of your posts and broadcast it to the masses. I’m not sure that’s working, but it’s a small motivation for me to get over my disdain for self-promotion.
The main message I’d like to get out from my more frequent posting is that ARMOR is now ready for beta testing, and if you want to try it out, just send me a direct message, email, or use the form on the brand new ARMOR landing page.

Recent work on ARMOR has centered around getting the Unified Robot Description Format (URDF) file importer and editor working, making sure to be able to import larger and more complex models as currently used in industry. Below, for example, I loaded a URDF-formatted model of Reachy, which I tracked down on GitHub.
Importantly, as URDF itself is a format with a lot of knobs and features, which add complexity to the app design, I wanted to create a couple of items to add in the user-friendliness of the end product: A “wizard”-like editor, and a tutorial that launches when someone first downloads the app. You can see the latter below, which inherits from the former.
Open Source
A big part of the task of making an iOS app that can handle URDF-formatted robot models, was also making them compatible with the most common 3D mesh formats used in industry, which happen to be STL, OBJ, and DAE, in no particular order. Generally, as I look at the URDF files readily available online, I’m finding STL to be most common as a geometry-only format for collision meshes, while OBJ and DAE can carry material properties like color and texture used in visual meshes.

Of course, none of these are directly supported by RealityKit, as Apple has made the strategic move to strictly support Universal Scene Description (USD) files. I would argue they have reason, as it is one of a pair of industry standards (the other being GLB) that I see in the majority of high-quality, mobile or web-optimized 3D object files. Supporting STL, for example, in RealityKit itself would feel like a step backward. However, since **my app** needs to support them, I needed to create with the conversion code myself, which I present for free at the links below.
Speaking of projects that are at 90% completion, I provide no guarantees that the above are perfect. In fact, I post the links largely in hopes that others online may contribute, which of course benefits me if it improves the ARMOR experience. Nevertheless, I think these are reasonably unique, and valuable to the RealityKit community, and I will be developing them in parallel with ARMOR. I will likely open-source my URDF-parser as well, though that will have to wait until after the app itself is published.
And, of course, when I do finally reach 100% completion of these tools, I can follow up with another how-to blog post!
CS50
In parallel with my own projects, I work in a couple hours of studying into each of my days; mostly to improve my Spanish, but also in software development, and computer graphics. I’ve now completed three of the CS50 courses, the baseline “X” course, which is the introduction to computer programming, the “AI” course in artificial intelligence, and the “W” course in web development. These are somewhat on the “entry-level” side relative to my real-world experience, but I wanted the refresher. I hadn’t, for example, taken an actual programming course since my sophomore year of college, when I learned C++.


I do find these to be good surface-level introductions to certain concepts that, while having awareness of in my daily work, I would not have otherwise taken the time to study and implement. For example, the AI course provided good coverage on search algorithms, and “game-playing” AI’s. Where I found myself wishing for a bit more was greater depth in certain topics like neural networks with TensorFlow, which I **have** actually applied it in my daily life. Honestly though, thats a particular topic that i think could be an entire course in itself.
Txirimiri
Something that I enjoy about the CS50 courses is their project-oriented structure, particularly the web development course. I’ve used the homework assignments as an opportunity to to build sites that I intend to use as showcases in my own profile. One of these is the aforementioned ARMOR landing page, and the other is an adaptation of my Txiriimiri app from my latest tutorial. The latter I used as my submission for the CS50W final project.
In the web version of Txirimiri, I cloned portions of the UI that I originally wrote for native iOS, and made it into web app that you can run in your browser. You can try it yourself at https://txirimiri.vercel.app/. Like the iOS tutorial, I am hosting the 3D model files on iCloud, which I learned that you can also access in JavaScript. The 3D rendering uses Three.js, with a grounded skybox composed from various 360deg images that I have generated in Polycam.
And of course, if you are wondering, yes, Basajauna is in Txirimiri.
Wrapping Up
This post serves as a sign of life for me, since I hadn’t posted anything in the blog in months. I’ve got a few different irons in the fire right now, with ARMOR being my “next-big-thing” for an app release. Expect for a big post about that coming soon. In the meantime, we’re still kicking it in Bilbao, and looking forward to another great year of pintxos and itsasmendi.
Txin Txin.
