Posted
about 3 years
ago
by
[email protected] (Jussi)
The disclaimerNone of this is in upstream Godot yet. It is only a proposal. The actual code can be obtained from the meson2 branch of this repository. Further discussion on the issue should be posted here.The problemGodot's code base is split into
... [More]
independent modules that can be enabled and disabled at will. However many games require custom native code and thus need to define their own modules. The simplest way to do this (which, I'm told, game developers quite often do) is to fork the upstream repo and put your your code in it. This works and is a good solution for one-off projects that write all extra code by themselves. This approach also has its downsides. The two major ones are that updating to a newer version of the engine can turn into a rebasing hell and that it is difficult to combine multiple third party modules.Ideally what you'd want to do is to take upstream Godot and then take a third party module for, say, physics and a second module written by completely different people that does sound effects processing, combine all three and have things just work. Typically those modules are developed in their own repositories. Thus we'd end up with the following kind of a dependency graph.This would indicate a circular dependency between the two repositories: in order to build the external module you need to depend on the Godot repo and in order to build the Godot you need to depend on the external repository. This is bad. If there's one thing you don't want in your source code it is circular dependencies.Solving it using Meson's primitivesIf you look at the picture in more detail you can tell that there is no circular dependencies between individual targets. Thus to solve the problem you need some way to tell the external dependency how to get the core libraries and headers it needs and conversely a way for the main build to extract from the external project what modules it has built and where they are. As Meson subprojects are built in isolation one can't just blindly poke the innards of other projects as one can do if everything is in a single megaproject.The way Godot's current build is set up is that first it defines the core libraries, then all the modules and finally things on top of that (like the editor and main executable). We need to extend this so that external modules are set up at the same time as internal modules and then joined into one. Thus the final link won't even be able to tell the difference between external and internal modules.First we need to set up the dependency info for the core libraries, which is done like this:godotcore_dep = declare_dependency(include_directories: INCDIRS, compile_args: CPP_ARGS, link_args: LINK_ARGS)meson.override_dependency('godotcore', godotcore_dep)First we set up a dependency object that encapsulates everything needed to build extension modules and then specify that whenever a dependency called godotcore is looked up, Meson will return the newly defined object. This even works inside subprojects that are otherwise isolated from the master project.Assuming we have a list of external module subprojects available, we can go through them one by one and build them.
foreach extmod : external_modules
sp = subproject(extmod)
MODULE_DEPENDENCIES += sp.get_variable('module_dep')
MODULES_ENABLED += sp.get_variable('module_names')
endforeach
The first line runs the subproject, the latter two are ignored for now, we'll come back to them. The subproject's meson.build file starts by getting the dependency info.godotcore_dep = dependency('godotcore')Then it does whatever it needs to build the extension module. Finally it defines the information that the main Godot application needs to use the module:
module_dep = declare_dependency(link_with: lib_module_tga,
include_directories: '.')
module_names = ['tga']
In this case I have converted Godot's internal tga module to build as an external module hence the name. This concludes the subproject and execution resumes in the master project and the two remaining lines grab the module build information and name and append them to the list of modules to use.This is basically it. There are obviously more details needed like integrating with Godot's documentation system for modules but the basic principle for those is the same. With this approach the integration of multiple external modules is simple: you need to place them in the main project's subprojects directory and add their names to the list of external module subprojects. All of this can be done with no code changes to the main Godot repo so updating it to the newest upstream version is just a matter of doing a git pull. [Less]
|
Posted
about 3 years
ago
I’m Victoria Martinez de la Cruz, but you can call me Vicky. First time I heard about the open source concept I was pretty young, I’d say, 12 years old. At that time it was quite common to use IRC to chat with friends and to get to know people. And it was precisely inContinue reading "An Open Source Journey that began at 12"
|
Posted
about 3 years
ago
Update on what happened across the GNOME project in the week from February 04 to February 11.
Core Apps and Libraries
Software
Lets you install and update applications and system extensions.
Philip Withnall announces
Adrien Plazas has updated
... [More]
the appearance of app reviews in gnome-software, as well as a number of other improvements across the UI
Settings
Configure various aspects of your GNOME desktop.
Alexander Mikhaylenko says
Backgrounds can now change depending on the light/dark preference. Thanks Jakub Steiner for making dark versions of all default backgrounds and Georges Stavracas (feaneron) for reviews
Vala
An object-oriented programming language with a self-hosting compiler that generates C code and uses the GObject system
lwildberg says
The examples in the beginners tutorial are also now available in Vala. So the perfect time to start your GNOME app in Vala! Thanks also to Nahu for supporting. This is the merge request.
Circle Apps and Libraries
Fragments
Easy to use BitTorrent client.
Felix says
Fragments 2.0 is now available! You can download the latest version from Flathub now. If you want to learn more, you should read my blog post.
Pika Backup
Simple backups based on borg.
Sophie Herold announces
This week Pika Backup got an interface for deleting old backup archives. The deletion happens based on user-defined prune rules. A lot of refactoring happened to make it easy to show progress for BorgBackup processes apart from backup creation.
Support for pruning old backup archives is vital for scheduled backup support. Otherwise, schedule settings like ‘Hourly’ could quickly fill up the backup storage.
gtk-rs
Safe bindings to the Rust language for fundamental libraries from the GNOME stack.
Maximiliano announces
Bilal Elmoussaoui and I made Rust bindings 🦀 for libsecret, they can be found here. Docs here.
Third Party Projects
dabrain34 says
GstPipelineStudio 0.2.3 is available on flathub with a few bug fixes related to the first flatpak release.
Forever announces
I released Random 1.1. This release includes a new icon, libadwaita 1.0, and some improved translations and behind-the-scenes things.
GNOME Shell Extensions
aunetx announces
I released version 3 of panel-corners extension, which permits the user to keep rounded corners for the panel, following their recent removal.
In addition, and thanks to Alexander Mikhaylenko, this extension also adds rounded corners to the screen; and permits you to configure the roundness settings (through gsettings for the moment).
It is widely based on gnome-shell’s own ancient code, and is already compatible with GNOME 40 and 41 for those who want to have rounded corners on the bottom of the screen!
Just Perfection
A tweak tool to customize the GNOME Shell and to disable UI elements.
Just Perfection reports
Just Perfection extension version 17 has been released with some bug fixes.
Also panel corner size option has been removed for GNOME Shell 42.
This version is named after Alexander Roslin (Swedish portrait painter).
That’s all for this week!
See you next week, and be sure to stop by #thisweek:gnome.org with updates on your own projects! [Less]
|
Posted
about 3 years
ago
For some reason, I didn’t get to see much people, and didn’t have much client work revenue throughout that year. I’m not sure why 🤔
TwentyTwenty was filled with unexpected events, discoveries, and opportunities to think about a lot of
... [More]
things. As nobody needs to read another editorial about the pandemic, I will attempt to summarize that year without discussing lockdowns, habit disruptions or international politics. Since this blog post is mostly chronological it does start with some dark stuff, but that’s just how it goes, it gets better (I think) and, as usual, concludes with a bunch of open-source related things.
Personal life summary
In January, one of my students/friends, Aida, died with her husband Arvin and 174 other passengers. She was 33 years old, and had just obtained her PhD a few weeks earlier. That hit me pretty hard. Two years after this incident, I still think of them regularly—you do not forget someone you worked with for half a decade.
Another one of my students/friends, Samer, died three months later, under nebulous circumstances, in his mid-twenties. As it happened right as the lockdowns were kicking in, I unfortunately did not get to pay my respects in person as I had done for James, Aida and Arvin. We were barely a quarter into the year and I was already fed up with this bad movie plot but, you know… shikata ga nai.
Not much happened during the couple of months that ensued (or not much that I remember, as I think we all collectively went through time dilation), other than working on resurrecting the Getting Things GNOME project (and doomscrolling).
But wait, keep on reading…
I found and bought the legendary rare-itemu ThinkPad X220T. A dream come true. There are many ThinkPads like it, but this one is mine.
I discovered that my then-16-years-old WordPress blog—an Elder of the Internet—predates unicode standardization on the web and was therefore a mix of latin1_swedish_ci, utf8, and utf8mb4 😱 I had to do database surgery to fix this before a major PHP update would break everything. It took me months to solve this; story for another day. But at least the fact that you’ve been reading this retrospective makes it all worth it 😃
I honed my bicycle maintenance skills (simple examples here and here) and taught myself a lot about bike restoration. The most dramatic case was an old folding bike that had been left to rust to death by some careless owner:
Rusted front wheel/fender/brakes
Rusted handlebar accessories
Rusted handlebar chrome
Beat-up fender, chain, wheels, etc.
Rusted wheel spokes, axles, etc.
…and that I fixed up real good:
Around the same time period in the summer of 2020, mai waifu, who had been stuck abroad for the past 12 months at that point, decided to end our relationship, as the prospect of coming back didn’t seem likely anymore in the context of the pandemic. Well, shi—’kata ga nai, desu yo~
With that turn of events, I went back to my personal projects backlog with a whole new perspective and set of priorities. With only myself to answer to and to take care of, I was essentially… limitless. No waifu? No laifu!™
Bit by bit, I completed a lot of “living space” improvement projects that had been put on hold. Since I now had free reign to buy/install/organize whatever I damned please in my mancave, that’s exactly what I did:
A bunch of office chairs and studio equipment in the living room? An accounting desk in a closet? A mobile tower of shelves in the water closet? Two visible pans racks on the countertops? Not-pretty-but-practical entryway rugs? Mobile wire rack shelving for conveniently storing equipment in plain sight? A 40-years-old floral wool carpet from Thaïland in the ultramodern studio? Yes to all of that! Whoever visits me from here on accepts the corporate and utilitarian nature of my premises, and that’s that. 😤
I have set up my home cinema with a dedicated computer connected to the projector, installed dark blackout curtains on rails on three walls, used dark floor foam tiles, and placed the surround speakers all around the room. The subwoofer is in an unusual orientation, firing horizontally (from behind the seating positions) while held by a DIY wooden platform atop vibration absorbers, on a inexpensive Sonopan sound absorption panel cutout, to reduce structural sound transmission to neighbors. It is a derivative of this idea I originally had.
In the same room, I have perma-installed the heavy (and rare) upcycled Cobalt Flux™ Dance Dance Revolution pads on top of heavy anti-fatigue bartender rubber mats (to prevent damaging the floor or transmitting step sounds). The Linux media center computer has a fully-loaded Stepmania on it, thanks to the existence of this flatpak. Yet somehow, throughout 2020, I wasn’t very much into the mood for dancing.
I set out to prepare to resume my independent practice for the next year, and diversify a bit. Therefore I created the Atypi.ca website in the summer-fall of 2020 as a trial-by-fire deployment (even though there was no business to be made on that front with all the lockdowns), learned a lot from that, and from that successful experience, started strategic planning for two other specialized business websites I would develop throughout 2021.
I now sleep on the floor next to pro-grade DDR pads. I guess I’m living the Japanese Dream? 🤔
Miscellaneous findings & thoughts
Discovered that traditional Japanese archers are super stealthy.
I also discovered, near the end of 2020, that the ex-waifu had previously viciously murdered my bamboo plant in 2019 😲 We’re still good friends, although I think she can no longer be considered a model millenial.
After many weeks (months?!) of research, found a durable headphone earpads solution for my Sony MDR-7506 studio monitoring headphones, and made a video about it.
Was very saddened by Behdad’s story of his very unfortunate encounter with Iran’s state police. You should read that article if you hadn’t seen it. Also covered on CBC news and on Global news. I was relieved to know that he had at least made it out alive. If you’re too new in the GNOME community to instantly know who Behdad is, this is a person to whom we owe a lot of Cairo, Pango, and various other fundamental GNOME technologies.
Pro tip™ for Firefox tab hoarders out there who have trouble identifying/reading their tab titles to close or move them: set a minimum tab width of 150 or 200 pixels (instead of the default 76) by setting the browser.tabs.tabMinWidth property (in about:config) to 150. Thank me later.
Throughout the year I had become collapse-aware again, as the pandemic laid bare humanity’s division and general ineptitude at solving even “practice rounds” of large-scale issues; does not bode well from a climate crisis perspective. And as much as I love meeting my tech family at GUADEC, I feel like Philip Withnall was definitely right (see also his GUADEC 2019 talk, “Environmentally Friendly GNOME”, part 1 and part 2 and this forum question). I unfortunately do not have reassuring answers when it comes to the climate emergency, other than thinking that local urban vertical hydroponic farms are an interesting approach to the unsustainability and failability of land-based agriculture as we currently know it, and that we at least reportedly solved the ozone layer problem 😌
Speaking of hydroponics, I tried the kratky method. I wish I had great success to report with my indoors “victory garden”, but while basilico thrives in kratky, I never managed to get my tomato plants to fruit with just natural light, and it is a supremely time-intensive research process. Also, my tomato plants always tend to get powdery mildew. “Perhaps I need to try my luck again next year, with a regular self-watering soil planter and lots of artificial light”, I thought.
Open-source contributions and interesting bug reports
With Diego & friends, we resurrected the Getting Things GNOME project and published the 0.4 release (sorry to be mentioning this for the zillionth time here, but it’s technically part of that year’s history). Went on to talk about it, from an Open-Source Community Management & Project Management perspective, at the beginning of Linux Unplugged’s 361st episode, then presented at GUADEC 2020 on a related topic. Development and new releases have been ongoing since then.
I’ve taken the time to experiment a bit on Evolution using the GTK Inspector, to figure out the combination of properties needed to make Evolution’s attachments bar IconView look good, and shared my findings in this bug report. Reportedly some of those suggested improvements are supposed to show up in Evolution 3.41.3 and newer. As I am stuck on Fedora 33, I haven’t tested this myself yet.
Experimenting with Evolution’s attachments bar iconview
Finally sat down to file a slew of usability and UX bugs, for all of “pavucontrol” fans who wish to use it to control devices in PulseAudio and PipeWire:
Client-side window decorations (headerbar) for pavucontrol
Use typographic quotes in pavucontrol for track names instead of straight single-quotes
pavucontrol’s volume meters (vumeters) should be vertical to save space and avoid confusion with the sliders
pavucontrol’s “on” text string should be aligned/close to the device output button, or replaced by something clearer
Renaming devices in pavucontrol is totally un-discoverable
Finally found the cause of this long-standing memory leak in Nautilus that causes the app to slow down massively, including slow tab changes: it happens if you have multiple files and folders in your ~/Templates directory. The issue is now reportedly fixed.
Periodic reminder of this time paradox bug report I filed in GNOME Calendar!
I can’t believe it took me so many years to have this “ah-HA!” moment and narrow down the usability problem that has been bugging with the interaction between GThumb and Nautilus, but here it is, laid out in a bug report: Don’t show files other than still pictures in the sidebar when inside a single image view, no matter what the browser’s filter is
Suggested that Evolution display search progress indications in its search entry widget. If someone here feels the same way and would be able to come up with a patch, I think it would really massively improve user experience.
Discovered that Evolution’s local full text search, while very accurate, appears to be single-threaded (judging from the CPU graph), which would explain why it takes 12 seconds to search through 20 thousand messages. Unfortunately, the issue of lack of multithreading was not solved. I wonder if any of my readers might care to work on it.
Investigated a really crazy heisenbug/mandelbug, where GNOME Shell crashes “when launching a French-titled website as a web app while running an external monitor in a custom arrangement”. I think it might be a good candidate to win the higgs-bugson, mandelbug and hindenbug awards of the year 😂
There were probably hundreds of other little open source contributions I did throughout 2020, but I can’t remember them all. I don’t know about you, but somehow my memory of that year is a little bit hazy. [Less]
|
Posted
about 3 years
ago
by
[email protected] (Jussi)
In previous blog posts (such as seals this one) we looked into typesetting a book with various FOSS tools. Those have used existing content from Project Gutenberg. However it would be a whole lot nicer to do this with your own content, especially
... [More]
since a pandemic quarantine has traditionally been a fruitful time to write books. Thus for completeness I ventured out to write my own. After a fair bit of time typing, retyping, typesetting, imposing, printing, gluing, sandpapering and the like, here is the 244 page product that eventually emerged from the pipeline.As you can probably tell, this was the first time i did gouache lettering with a brush. It behaved differently from what I expected and due to reasons I could only do this after the cover had been attached to the text block, so there was no going back or doing it over.What's its name in English and what genre does it represent?The first one of these is actually quite a difficult question. I spent a lot of time trying to come up with a working translation but failed. Not only is the title a pun, it contains an intentional spelling error. A literal translation would be something like The First Transmission Giltch, though that misses the fact that the original name contains the phrase First Contact. The working title for the book was Office Space in Space.As you can probably tell, the book is a sci-fi satire about humanity's first contact with alien civilisations, but it can be seen as an allegory of a software startup company. ISO standardisation also plays a minor part, and so do giant doughnuts, unexpected gravities, a cosplay horse and even space sex (obviously).At this point many of you have probably asked the obvious question, namely isn't this just a blatant Hitchhiker's Guide to the Galaxy ripoff?Not really. Or at least I'd like to think that it isn't. This can be explained with an analogy: what Hitchhiker's is to Star Wars, this book is to Star Trek. More specifically it is not high fantasy, but more technical, down to earth and gritty, for lack of a better term.Can I read it?You almost certainly can not.In fact, let's be scientific and estimate how unlikely it would be. The first hurdle is getting the book published. Statistics say that only one book out of a thousand offered to publishers actually gets published. Even if it did get published and you had a physical copy in your hands, you probably still could not read it, since it is written in Finnish, a language that is understood only by 0.1 percent of the planet's population. If we estimate how many people who could read it actually would read it then the chances are again roughly one of a thousand.Putting all these together and assuming a planetary population of 7 billion we find that the book will only be read by around seven people. Thus far I have convinced five of my friends to read the preview version so there are only two slots available. Your chances of being one of the two are thus quite slim. On the other hand if you are an extreme hipster, the kind who likes to boast to their friends that they only read books in languages they don't speak and which require their readers to understand both French and Latin in order to get some of the jokes within, you may have found your Citizen Kane.If you can find it, that is. [Less]
|
Posted
about 3 years
ago
by
[email protected] (Jussi)
In previous blog posts (such as seals this one) we looked into typesetting a book with various FOSS tools. Those have used existing content from Project Gutenberg. However it would be a whole lot nicer to do this with your own content, especially
... [More]
since a pandemic quarantine has traditionally been a fruitful time to write books. Thus for completeness I ventured out to write my own. After a fair bit of time typing, retyping, typesetting, imposing, printing, gluing, sandpapering and the like, here is the 244 page product that eventually emerged from the pipeline.As you can probably tell, this was the first time i did gouache lettering with a brush. It behaved differently from what I expected and due to reasons I could only do this after the cover had been attached to the text block, so there was no going back or doing it over.What's its name in English and what genre does it represent?The first one of these is actually quite a difficult question. I spent a lot of time trying to come up with a working translation but failed. Not only is the title a pun, it contains an intentional spelling error. A literal translation would be something like The First Transmission Giltch, though that misses the fact that the original name contains the phrase First Contact. The working title for the book was Office Space in Space.As you can probably tell, the book is a sci-fi satire about humanity's first contact with alien civilisations, but it can be seen as an allegory of a software startup company. ISO standardisation also plays a minor part, and so do giant doughnuts, unexpected gravities, a cosplay horse and even space sex (obviously).At this point many of you have probably asked the obvious question, namely isn't this just a blatant Hitchhiker's Guide to the Galaxy ripoff?Not really. Or at least I'd like to think that it isn't. This can be explained with an analogy: what Hitchhiker's is to Star Wars, this book is to Star Trek. More specifically it is not high fantasy, but more technical, down to earth and gritty, for lack of a better term.Can I read it?You almost certainly can not.In fact, let's be scientific and estimate how unlikely it would be. The first hurdle is getting the book published. Statistics say that only one book out of a thousand offered to publishers actually gets published. Even if it did get published and you had a physical copy in your hands, you probably still could not read it, since it is written in Finnish, a language that is understood only by 0.1 percent of the planet's population. If we estimate how many people who could read it actually would read it then the chances are again roughly one of a thousand.Putting all these together and assuming a planetary population of 7 billion we find that the book will only be read by around seven people. Thus far I have convinced five of my friends to read the preview version so there are only two slots available. Your chances of being one of the two are thus quite slim. On the other hand if you are an extreme hipster, the kind who likes to boast to their friends that they only read books in languages they don't speak and which require their readers to understand both French and Latin in order to get some of the jokes within, you may have found your Citizen Kane.If you can find it, that is. [Less]
|
Posted
about 3 years
ago
Mistakes were made¹, and after recent maintenance,
Jordan asked Infrastructure Team if there is a chance GNOME Nightly
(and its younger sibling GNOME OS) could be moved somewhere with faster network
and more storage. After short discussion, we
... [More]
decided to move it to AWS (thanks
to promotional credits for open source projects). The new server has three
times more space, uses SSD instead of HDD, and should offer up to 10 Gbps of
network bandwidth.
It quickly became apparent we underestimated GNOME Nightly popularity by a
large margin. On the second day, the new server transmitted almost 500 GB of
data. As we wanted to limit potential egress costs, we reached out to
CDN77, and they quickly agreed to help us. CDN77 team
aren’t stranger to the open source world, helping other projects like KDE,
Gentoo and Manjaro.
With the new server fully dedicated to GNOME Nightly, and turbo fast CDN in
front, I can easily saturate my 1Gbit connection at home while downloading the
infamous org.gnome.Sdk.Debug//master. Since the switch on January 22nd, CDN77
has served for us over 40 million requests, which sums up to 11 TB of traffic.
While it is well-known nobody notices infrastructure until it’s broken, here’s
hoping it just became more invisible.
Thanks to AWS and CDN77 for making it possible!
¹ Slow IO caused by spinning disks aside, the implementation of
repository pruning in Flatpak before the 1.11.1 release was prone to remove
actually required ostree objects if a new build was being published at the same
time. [Less]
|
Posted
about 3 years
ago
As part of my seven-years retrospective, here’s a 5-6 minutes readable summary of what I did in 2019.
Personal life summary
Q4 2018’s intense professional stress was replaced by emotional exhaustion in 2019’s Q1 and Q2. Caring for folks who
... [More]
have residual schizophrenia comorbid with depression and high-functioning autism, really is a lot of work that turns your life upside down, especially when a portion of your support network ghosts or gaslights you as they do not see any of the things you see.
Continued work with fellow researcher Dr Julien Meyer. It was a pleasure to collaborate with him in my day-to-day, and we probably kept each other sane during a pretty long winter. I was really happy for him when he landed a fulltime professor job at Nancy’s university of architecture some months later, although I was sad to see him leave Montréal.
I bought some tatami mats to sleep on the floor and I was pretty happy with them, but my waifu kept complaining that they “smell like a farm’s barn” and I had to get rid of them. Such a waste. Shikata ga nai desu yo~
Was very pleased to see Greta Thunberg gaining traction as she expressed into words what I had been feeling for the better part of my life.
For administrative reasons, mai waifu had to leave Canada and go back to France. I told people, “She left with the dog!” (technically, she did, here’s proof)
Pictured: a corginapping
With experience, I can now say I love dogs, but do not have the lifestyle to adequately care for them as an urban dweller. I also do not miss picking up poop three times a day at -20°C, or feeling genuinely sorry for their boredom while I relentlessly work in front of a computer. Having a dog—which typically is a very active being—when you have a busy sedentary lifestyle seems… somewhat cruel.
Coincidentally, all my consulting contracts ended in the summer that year, including “that technology manufacturing company” whose business management strategy had grown increasingly intolerable for me and my professional ethos as CMO. Considering the fact that I had also stepped down from my remaining facility management board duties some months prior, this meant I was, for the first time in a long time, not receiving 400-500 emails per week anymore, which was quite pleasant. It felt like I was waking up from a lucid dream.
Overall, with those multiple changes in responsibilities having occurred by Q3 2019, my life suddenly became much simpler again. Since I also needed a change of scenery while I was in limbo for mai waifu’s return and my upcoming apartment move, I took the opportunity to spend most of 2019 doing R&D to fix or improve my processes and positioning. Namely, I:
overhauled my personal website again (the last round was in 2017) to increasingly focus it on my consulting services rather than pretty drawings and photos (which you can still find if you look hard enough);
recreated my personal YouTube channel (but I then some months later, as the pandemic struck, I ran out of time and energy to post new stuff. One day I’ll get back to it.);
spent most of 2019 fixing my web infrastructure on fire (including this blog, and many other sites, whether for bugfixes or security patching) and my personal tools, some of which can be read about in the first and second part of the “upgrade treadmill trilogy”: about servers, and about browsers and desktop tools.
I also fixed up my VoIP systems (personal and business phone infrastructure)
Sold a prime investment opportunity, via email, to two people who were living on a boat in the Caribbean. I am not making this up, and I swear it was 100% legit. It had nothing to do with cocaïne or a sentient La-Z-Boy. Sometimes I think I would have a much easier time being a salesman or broker than an open-source marketeer 😏
Joined the Instant Pot™ sect. Seriously, semi-automated electric multi-function pressure cooking is a revolution in efficiency for busy young professionals.
After many days of research and analysis, ordered prescription glasses online for the first time (through EyeBuyDirect). For those who have very strong short-sightedness and astigmatism, paying 100$ instead of 300-700$ for glasses, and being able to “try them on” virtually with a photo (which allows a standardized, systematic comparison, and being able to actually see yourself—because you’re short-sighted, of course you can’t see yourself when trying out glass frames in stores), is a game-changer.
Spent days upon days of research and thinking about acoustic treatment for my video production studio room. I thus have a lot of information on the matter, but never ended up putting it into practice, as 2020-2021 has been too much of a mess and I had to shelve that project.
Moved to a different appartment. There often are a thousand papercuts involved with settling in and fixing stuff in a new home, and in this case it took months. The interior design process for the new location could warrant its own story, but I don’t know if anyone would actually care to read (or hear) about that.
Pictured: packing stuff into boxes for moving out of the old apartment
Bug reports and open-source stuff
Discovered that thumbnails generation in Nautilus (GNOME “Files”) is extremely slow compared to other file and image managers, and reported the performance issue with my initial observations. There have been some community patches proposed there to alleviate the problem by making use of multiple CPU threads instead of a single one, but they have not yet been reviewed as of early 2022. I hope they will be considered eventually, along with further possible performance enhancements.
Discovered that there is a way, with some hidden dconf gsettings, to make Tracker not destroy your computer’s performance, by throttling its indexing performance to the minimum (org.freedesktop.Tracker3.Miner.Files.throttle = 20) and by tweaking another setting to delay its launch on login (org.freedesktop.Tracker3.Miner.Files.initial-sleep = 45). It posit that these settings should be the default behavior. There never is a good time for a background search database indexer to be hammering my desktop’s performance. Needing to instantly be able to search, right upon login, through a gigantic filesystem that was somehow never indexed before is not a thing.
Discovered that you can tell Evolution, the email client, to only show email notifications for certain accounts. Go set your preferences in the Plugin Manager’s “Mail Notification” built-in plugin.
Thoroughly appreciated being able to finally migrate from Firefox 57 to a recent (post-quantum) version of Firefox, as Drive4ik’s wonderful “Simple Tab Groups” extension proved to be bulletproof and provided an upgrade path from Quicksaver’s “Tab Groups” extension. Again, STG is an absolute must-have extension; if you’re a chaos warrior, use it; you’ll thank me later.
Pondered what to do about the fact that my password manager, Revelation, was being removed from Fedora. I’ll spare you the details, but after much research and thinking, I ended up converting all my passwords to… an encrypted spreadsheet. And that is my password management system now. At least I know it will still work 20 years from now.
Pondered what I would do considering that GTG, my favorite productivity tool I was fully dependent on, was getting deprecated from Fedora’s packages. The rest, if you’ve been reading my blog is history. Otherwise, check out this epic tale about the upgrade treadmill of open-source desktop applications.
Proposed a stupidly simple yet functional presenter notes user interface mockup for LibreOffice Impress in my decade old bug report. The mockup is also attached to the bug report. I’m not offering a Ferrari this time, but someone else did mention they would be happy to pay a thousand pounds to whoever implements this. Just sayin’.
Went to the GStreamer conference for the first time in six years, and made this short documentary video. I would like to sincerely thank the GStreamer Foundation for supporting my travel to attend the event, which allowed me to produce that video pro-bono.
Miscellaneous findings and lifehacks
Did you know that you can set the amount of floors or height of objects (like buildings, trees, etc.) in OpenStreetMap? That’s what I did, and if you use a 3D representation of OpenStreetMap, like the F4 map, you can see the difference, complete with the sun’s shadow projections depending on the time of the day.
Realized that Squall actually died at the end of Disc 1 in Final Fantasy VII, and the three subsequent discs were just his dying dream. Square Enix will never admit this, but this is the only plausible storyline I will now consider makes sense.
As 2019 ended I thought, “Alright, let’s finish tying loose ends, do some forecasting, and prepare for great business in 2020!”… Aaaah, such gleeful optimism! 🤭 [Less]
|
Posted
about 3 years
ago
As part of my seven-years retrospective, here’s a 5-6 minutes readable summary of what I did in 2019.
Personal life summary
Q4 2018’s intense professional stress was replaced by emotional exhaustion in 2019’s Q1 and Q2. Caring for folks who
... [More]
have residual schizophrenia comorbid with depression and high-functioning autism, really is a lot of work that turns your life upside down, especially when a portion of your support network ghosts or gaslights you as they do not see any of the things you see.
Continued work with fellow researcher Dr Julien Meyer. It was a pleasure to collaborate with him in my day-to-day, and we probably kept each other sane during a pretty long winter. I was really happy for him when he landed a fulltime professor job at Nancy’s university of architecture some months later, although I was sad to see him leave Montréal.
I bought some tatami mats to sleep on the floor and I was pretty happy with them, but my waifu kept complaining that they “smell like a farm’s barn” and I had to get rid of them. Such a waste. Shikata ga nai desu yo~
Was very pleased to see Greta Thunberg gaining traction as she expressed into words what I had been feeling for the better part of my life.
For administrative reasons, mai waifu had to leave Canada and go back to France. I told people, “She left with the dog!” (technically, she did, here’s proof)
Pictured: a corginapping
With experience, I can now say I love dogs, but do not have the lifestyle to adequately care for them as an urban dweller. I also do not miss picking up poop three times a day at -20°C, or feeling genuinely sorry for their boredom while I relentlessly work in front of a computer. Having a dog—which typically is a very active being—when you have a busy sedentary lifestyle seems… somewhat cruel.
Coincidentally, all my consulting contracts ended in the summer that year, including “that technology manufacturing company” whose business management strategy had grown increasingly intolerable for me and my professional ethos as CMO. Considering the fact that I had also stepped down from my remaining facility management board duties some months prior, this meant I was, for the first time in a long time, not receiving 400-500 emails per week anymore, which was quite pleasant. It felt like I was waking up from a lucid dream.
Overall, with those multiple changes in responsibilities having occurred by Q3 2019, my life suddenly became much simpler again. Since I also needed a change of scenery while I was in limbo for mai waifu’s return and my upcoming apartment move, I took the opportunity to spend most of 2019 doing R&D to fix or improve my processes and positioning. Namely, I:
overhauled my personal website again (the last round was in 2017) to increasingly focus it on my consulting services rather than pretty drawings and photos (which you can still find if you look hard enough);
recreated my personal YouTube channel (but I then some months later, as the pandemic struck, I ran out of time and energy to post new stuff. One day I’ll get back to it.);
spent most of 2019 fixing my web infrastructure on fire (including this blog, and many other sites, whether for bugfixes or security patching) and my personal tools, some of which can be read about in the first and second part of the “upgrade treadmill trilogy”: about servers, and about browsers and desktop tools.
I also fixed up my VoIP systems (personal and business phone infrastructure)
Sold a prime investment opportunity, via email, to two people who were living on a boat in the Caribbean. I am not making this up, and I swear it was 100% legit. It had nothing to do with cocaïne or a sentient La-Z-Boy. Sometimes I think I would have a much easier time being a salesman or broker than an open-source marketeer 😏
Joined the Instant Pot™ sect. Seriously, semi-automated electric multi-function pressure cooking is a revolution in efficiency for busy young professionals.
After many days of research and analysis, ordered prescription glasses online for the first time (through EyeBuyDirect). For those who have very strong short-sightedness and astigmatism, paying 100$ instead of 300-700$ for glasses, and being able to “try them on” virtually with a photo (which allows a standardized, systematic comparison, and being able to actually see yourself—because you’re short-sighted, of course you can’t see yourself when trying out glass frames in stores), is a game-changer.
Spent days upon days of research and thinking about acoustic treatment for my video production studio room. I thus have a lot of information on the matter, but never ended up putting it into practice, as 2020-2021 has been too much of a mess and I had to shelve that project.
Moved to a different appartment. There often are a thousand papercuts involved with settling in and fixing stuff in a new home, and in this case it took months. The interior design process for the new location could warrant its own story, but I don’t know if anyone would actually care to read (or hear) about that.
Pictured: packing stuff into boxes for moving out of the old apartment
Bug reports and open-source stuff
Discovered that thumbnails generation in Nautilus (GNOME “Files”) is extremely slow compared to other file and image managers, and reported the performance issue with my initial observations. There have been some community patches proposed there to alleviate the problem by making use of multiple CPU threads instead of a single one, but they have not yet been reviewed as of early 2022. I hope they will be considered eventually, along with further possible performance enhancements.
Discovered that there is a way, with some hidden dconf gsettings, to make Tracker not destroy your computer’s performance, by throttling its indexing performance to the minimum (org.freedesktop.Tracker3.Miner.Files.throttle = 20) and by tweaking another setting to delay its launch on login (org.freedesktop.Tracker3.Miner.Files.initial-sleep = 45). It posit that these settings should be the default behavior. There never is a good time for a background search database indexer to be hammering my desktop’s performance. Needing to instantly be able to search, right upon login, through a gigantic filesystem that was somehow never indexed before is not a thing.
Discovered that you can tell Evolution, the email client, to only show email notifications for certain accounts. Go set your preferences in the Plugin Manager’s “Mail Notification” built-in plugin.
Thoroughly appreciated being able to finally migrate from Firefox 57 to a recent (post-quantum) version of Firefox, as Drive4ik’s wonderful “Simple Tab Groups” extension proved to be bulletproof and provided an upgrade path from Quicksaver’s “Tab Groups” extension. Again, STG is an absolute must-have extension; if you’re a chaos warrior, use it; you’ll thank me later.
Pondered what to do about the fact that my password manager, Revelation, was being removed from Fedora. I’ll spare you the details, but after much research and thinking, I ended up converting all my passwords to… an encrypted spreadsheet. And that is my password management system now. At least I know it will still work 20 years from now.
Pondered what I would do considering that GTG, my favorite productivity tool I was fully dependent on, was getting deprecated from Fedora’s packages. The rest, if you’ve been reading my blog is history. Otherwise, check out this epic tale about the upgrade treadmill of open-source desktop applications.
Proposed a stupidly simple yet functional presenter notes user interface mockup for LibreOffice Impress in my decade old bug report. The mockup is also attached to the bug report. I’m not offering a Ferrari this time, but someone else did mention they would be happy to pay a thousand pounds to whoever implements this. Just sayin’.
Went to the GStreamer conference for the first time in six years, and made this short documentary video. I would like to sincerely thank the GStreamer Foundation for supporting my travel to attend the event, which allowed me to produce that video pro-bono.
Miscellaneous findings and lifehacks
Did you know that you can set the amount of floors or height of objects (like buildings, trees, etc.) in OpenStreetMap? That’s what I did, and if you use a 3D representation of OpenStreetMap, like the F4 map, you can see the difference, complete with the sun’s shadow projections depending on the time of the day.
Additional tip: as Alexandre Franke kindly points out, you can also use the free & open-source StreetComplete Android app to make edits on the go while walking around, and object heights is one of the questions the app might ask you to fill in.
Realized that Squall actually died at the end of Disc 1 in Final Fantasy VII, and the three subsequent discs were just his dying dream. Square Enix will never admit this, but this is the only plausible storyline I will now consider makes sense.
As 2019 ended I thought, “Alright, let’s finish tying loose ends, do some forecasting, and prepare for great business in 2020!”… Aaaah, such gleeful optimism! 🤭 [Less]
|
Posted
about 3 years
ago
It was a bit quiet around Fragments, many had the fear that Fragments will no longer be maintained.
These rumors I can proudly counter, and can now announce that Fragments 2.0 is now available after about a year of development!
Technical
... [More]
difficulties
Until recently Fragments was written in Vala, and used libtransmission as a backend. This had some disadvantages, e.g. a vapi file has to be maintained (the glue between the Transmission C API, and the Fragments Vala code).
In addition to that there are considerations from the Transmission maintainers to replace the C API with C++. This would mean that Fragments would not be able to use the Transmission API without creating (and maintaining) another wrapper (C++ -> C). In the long run I didn’t think this was very realistic.
And to be honest, Fragments was my last Vala application, and I was thinking for a long time how I could replace it with Rust
The new beginning
The first thing I needed was a suitable BitTorrent backend. Since I have neither the knowledge nor the time to write my own BitTorrent implementation in the long run, my only option was to fall back on something already existing. Unfortunately, there is currently no BitTorrent implementation written in Rust that is comparable to libtransmission in terms of stability and features.
After a few brainstorming sessions I came up with the idea to continue using Transmission, but not via the C API, but to use transmission-daemon, and then communicate via its HTTP RPC API. This has several advantages:
Clean abstraction between the BitTorrent backend, and the actual application (this has some nice side effects, more on that later!)
Already existing functions in Fragments 1 can be ported directly
The later migration from Vala to Rust is completely seamless from the end-user’s point of view, as transmission-daemon can directly take over the already existing configuration files etc. from Fragments 1.
The implementation
I needed to create a new client that would allow me to communicate with the Transmission RPC API. This was fortunately not a huge challenge in Rust thanks to serde-json. To keep this abstraction consistent, I decided not to develop this client in-tree within the Fragments source code, but to publish it as a separate crate on crates.io: transmission-client
This crate takes care of RPC communication only, and can therefore be easily reused in other Rust apps. However, from a Fragments perspective, it would be beneficial if I would be able to use the Transmission API using the GObject type system. So I decided to develop a second crate: transmission-gobject. This wraps the API of the first crate into gtk-rs gobjects. This has the advantage that I can easily embed the transmission data in the Fragments interface, because everything is available as a object with properties, and models. I could therefore concentrate on the pure application in Fragments and didn’t have to worry about technical aspects of the BitTorrent backend.
To visualize the whole thing:
When starting Fragments, the transmission-daemon process also gets started automatically in the background.
Fragments 2.0
Due to the strict abstraction on the network level, there is a big advantage: It does not matter if Fragments connects to its “own” transmission-daemon, or if it connects to a remote transmission server. Likewise, Fragments can be used to remotely control another Fragments session.
For example, I have Transmission installed on my Synology NAS, and use it as a “download server”. I can now connect to it directly from within Fragments:
https://blogs.gnome.org/haeckerfelix/files/2022/02/remote_connect_demo.webm
It is also possible to switch between the individual “connections” directly within the app:
https://blogs.gnome.org/haeckerfelix/files/2022/02/switch_demo.webm
Of course there are a lot of other new features:
A new torrent dialog window
Torrent rows have context menus now to access important actions more quickly
Session statistics
The magnet link of already added torrents can now be copied to the clipboard
Completely overhauled preferences with more options like setting a separate path for incomplete torrents, queue management, behavior when new torrents are added and much more granular network configuration with the possibility to test the connection
Fragments 2.0 can be downloaded and installed from Flathub now!
Thanks
I would like to thank Maximiliano and Chris, both helped me a lot with the Rust + GTK4 port, and Tobias who helped me with the updated design! [Less]
|