Skip to content

Wednesday, 13 April 2022

In my previous blog, I mentioned finalizing the activity by making the code clean, so it is ready to be merged.

Update on tasks mentioned in my previous blog

How to check if a device has mouse support?

There are a few ways for an application/browser to check mouse support in javascript, but they are not completely reliable as they fail when the device is touchscreen and has mouse support.

One way could be to use DeviceType.Mouse this enum represents the type of device that generated a QTouchEvent. But the enum does not change depending on the operating system. Another possible way could be QInputDevice, but this method is available in Qt 6.0, and our application is at Qt 5. I have created a phabricator task for the same. So when we upgrade to Qt6, we can apply this, and the visibility of the activities can be changed based on the input devices.

Phabricator task 

Some useful links for this:

Challenges Faced

  • When we click on the animal card, it moves towards its house. At first, implementing this idea was very challenging as the animal house is under a separate parent and the animal card is under a different parent. So the scope of the animal card to move is limited (within its parent). Selecting the correct coordinate was very important. One way is to assign the constant value, but this is not ideal as changing the house position will send the animal card to its previous position. So using ParentChange, I made them lie under the same parent, and now the animal card can identify its target, and this method will work even if the house position is changed.
  • The random placing of the animal cards inside the animal card container by avoiding overlap. For this, I created a third type of card which is invisible. The invisible card will help us create a random gap between two visible animal cards. We insert all the cards in an array, shuffle them, and then display the shuffled array containing animal cards as it is. In this way, we can solve the overlapping problem, and they are random as well.
  • Size of the animal cards. Initially, I used them with respect to their parents, but this is not the optimal way to do it. My mentors advised a better way to find the size of the cards. We have a function defined in core.js as fititem which takes the container’s height, width, and count of objects we want inside the container and provides us with the object’s length. By using this, I was able to make the size of animal cards more dynamic and adaptive to different screen sizes.

Experience as a Season of KDE contributor

I’ve always seen memes about how a bug makes us really anxious, and finding a solution makes us double happy at the next second. During the Season of KDE, I experienced this for the first time. I learned so many things by making mistakes, and now I am thankful for those mistakes because I got to know so many things by trying to fix one thing.  

It makes me proud that now I can call myself a successful contributor to open source. I am grateful to my mentors (Emmanuel and Harsh, Johnny and Timothee) for teaching me about Qt/Qml and for solving all my doubts, no matter how silly they were.

What next?

My interest has increased in open source contributions, and I wish to contribute more to KDE and other open source organizations in the future.

Thank you for taking the time to read this. 🙂

Hello!

This is my final status update for Season of KDE 2022. There's news on the Flatpak CI builds and my plans for after this event.

Flatpak CI Builds

With help and suggestions from my mentor, Timothée Ravier, I got the CI script finalized from our side. I created a pull request on the CI repository.

I initially didn't know that the images on KDE infra are not ephemeral. As a result, I spent a great deal of time on slimming down the Docker image I was using. I started off with an Arch Linux image, which I later switched to Fedora. The script itself went many changes before it was submitted for review. Initially it didn't have flexibility with regards to location of manifest and could only build apps requiring the latest KDE platform. It was updated over and over until we were satisfied.

After I submitted the script for review, Ben Cooksley gave a lot of useful suggestions. The script is now much more flexible with regards to manifest location. It can dynamically decide which platform and SDK to use.

The pull request hasn't been merged, but I will get it done in due time.

FEDC on KDE Invent

I also planned to have an automatic updater on our master Flatpak repository. While the overall idea of how this is to be accomplished has been clear from the very beginning, the actual implementation however has gone many changes. For now, it is a shell script which I wanted to move to Python. I actually did rewrite it in Python - and I wasn't yet satisfied.

During the review of my pull request for Flatpak CI script, Ben proposed that we have each manifest in individual application repositories. A side effect is that the script will need to be modified a little bit.

I've kept the script on hold for now, although the basic bits are set up. I'll just need to plug in the final stuff once we decide where the manifests are going to be placed.

Beyond SoK

Season of KDE has been a great experience for me. I got to know some very cool people. I got to learn cool things. I did cool things. I've been close to open source and SoK was a great booster to my experience.

I'll be taking a break for ~3 weeks to get done with my exams. When I return, I'll fast track the CI stuff that is currently on draft. I'm still available on the KDE Matrix and email.

Bye bye!

Tuesday, 12 April 2022

If you want to test the Gentoo LiveGUI, but don't feel like cutting short the precious uptime of your machine, here's a handy bash script for testing the iso files with qemu:

#!/bin/bash

qemu-system-x86_64    -m 4G \
           -enable-kvm \
           -cpu host \
           -smp 4 \
           -name "Gentoo amd64 LiveGUI" \
           --netdev user,id=vmnic,hostname=gentoovm \
           -device e1000,netdev=vmnic \
           -bios /usr/share/edk2-ovmf/OVMF_CODE.fd \
           -device intel-hda -device hda-duplex \
           -usbdevice tablet \
           -vga vmware \
           -cdrom $1

You'll need to be in the kvm group and have kvm configured in your kernel. Also you may want to adapt the memory (now 4Gbyte) and the number of CPUs (now 4) for the virtual machine. Then you can simply start the boot process with

~ $ ./qemu-livegui livegui-amd64-20220412T191925Z.iso &

Cheers!

gcompris 2.4

Today we are releasing GCompris version 2.4.

We optimized the size of all the packages for all platforms and of the external word images set (~30% smaller).

If you disabled the automatic download and want to have the full images set, you should go to the configuration and click on "Download full word image set".

The text "Full word image set is installed" is displayed below when you have the latest version.

Norwegian Nynorsk introduction voices have been added by Karl Ove Hufthammer and Øystein Steffensen-Alværvik. Malayalam voices have been completed by Aiswarya Kaitheri Kandoth.

Many images have been updated for several activities.

We have also fixed a few bugs in Renewable energy, Watercycle and Logical associations activities.

You can find packages of this new version for GNU/Linux, Windows, Raspberry Pi and macOS on the download page. This update will be available soon in the Android Play store, the F-Droid repository and the Windows store.

Thank you all,
Timothée & Johnny

Friday, 8 April 2022

Let’s go for my web review for the week 2022-14.


Lightboard is a glass chalkboard pumped full of light

Tags: tech, teaching

OK… now that’s really neat for most teaching situations. I want one. :-)

https://www.lightboard.info/home


It is important for free software to use free software infrastructure

Tags: tech, free-software, ethics

The never ending debate on the tools used to produce free software. Of course, in general those tools should be free software as well (IMHO).

https://drewdevault.com/2022/03/29/free-software-free-infrastructure.html


The Squeaky Blog | Why we don’t use a staging environment

Tags: tech, deployment, ci

OK, definitely not something I’d advise by default. Still, if you’re in the right situation that might be an option. The fact that they don’t deploy in one go is definitely a factor here.

https://squeaky.ai/blog/development/why-we-dont-use-a-staging-environment


In defense of simple architectures

Tags: tech, architecture, complexity

This is a good example in my opinion: stick with simple choices as long as possible, invest the complexity where it matters.

https://danluu.com/simple-architectures/


Python f-strings Are More Powerful Than You Might Think | by Martin Heinz | Apr, 2022 | Towards Data Science

Tags: tech, python

Nice list of lesser known tricks with Python formatted string literals.

https://towardsdatascience.com/python-f-strings-are-more-powerful-than-you-might-think-8271d3efbd7d


Improving Python S3 Client Performance with Rust | by Joshua Robinson | Mar, 2022 | Medium

Tags: tech, networking, rust, python

Interesting use of Rust behind a Python API. This is IMO an interesting niche for the language.

https://joshua-robinson.medium.com/improving-python-s3-client-performance-with-rust-e9639359072f


When to delegate, when to say no

Tags: management, todo, productivity

Packed with quite a few interesting advices. Starts from the infamous Eisenhower matrix and neatly shows how to apply it.

https://larahogan.me/blog/when-to-delegate-when-to-say-no/


Your last one-on-one: what to do instead of an exit interview - Jacob Kaplan-Moss

Tags: management, hr

Good set of advices on how to deal with someone quitting the company.

https://jacobian.org/2022/apr/7/your-last-o3/


The Influence of Neuromancer on Cyberpunk — sabukaru

Tags: cyberpunk, culture, book

Definitely one of my favorite novels of all times. To me it is clearly the book which defined Cyberpunk.

https://sabukaru.online/articles/how-neuromancer-birthed-cyberpunk



Bye for now!

Thursday, 7 April 2022

In my previous blog, I discussed the random placement of the animal cards and avoiding the overlap between two animal cards.

As we are moving towards the end of the SoK period. I want to thank my mentors for resolving all my doubts(mostly silly) and helping me improve.

Update on tasks mentioned in my previous blog

Adding multiple datasets

The activity was still a single-level activity, so the next task was to add multiple datasets to the activity to make it more interactive. After discussing with my mentors, we agreed to add five levels to the activity. We’ll have four animals cards on the first level, and after that, we to increase two cards for each level. So at the final (5th) level, there will be 12 cards. But after that, we decided to have three levels only as there is not much difference in the difficulty of the activity level wise. We’re only increasing the number of cards, so three levels are ideal. And level 1 has more right-side animal cards, level 2 has left-side cards, and level 3 has an equal number of left and right side animal cards.

Other small improvements

The in-display mouse is completely functional now. It provides feedback for every click. For every correct click, two events are happening. The first is that the animal card moves towards its suitable house, and the second is the left or right click of the in-display mouse, depending upon the nature of the click (if it’s correct). The left or right side button changes its color and demonstrates a pressed effect.

I also added the activity description, improved a few variable names, and made the code clean. So it’s ready to be merged (after a few final checks).

Current Progress

Here’s a visual representation.

Level – 1

Level – 3

Learnings from Season of KDE

I’ve learned so many things during these months that it’s impossible to mention each of them. But I will tell you about my two significant learnings.

1. Trust the Process – At first, I was very nervous and skeptical about me completing this activity. Because before this, I had only worked on a minor issue (implementing the undo-all button in chess activity), and this was going to be my first significant contribution towards GCompris. But mentors helped me understand Qt/Qml. In the first few weeks, I was really slow because all this was too overwhelming for me, but after giving it time, I  started making progress. Understanding the documentation plays a huge role because after this, I converted my thought process into code and discussed with mentors to understand the optimal way to implement a certain thing. I also improved my communication with mentors during this time.

2. We are writing code for the future – What I mean by this statement is generally, when we are working on something, we don’t really care about the quality of the code and tend to name variables literally anything, but when we are writing code for an application which has so many active users, then we need to keep in my mind that the code needs to be clean and easy to understand even if a beginner is trying to understand or someone who is having no context about it.

What next?

  • To find a way to detect if a mouse is connected to the device or not. (As this activity is suitable for mouse attached devices).

Thank you for taking out the time to read this. 🙂

Monday, 4 April 2022

Artist Larry

After a long break, we now have again a weekly LiveGUI ISO image for amd64 available! The 4.7 GB download, suitable for DVD burning or an USB stick, boots directly into KDE Plasma and comes with a ton of up-to-date software. This ranges from office applicactions such as LibreOffice, Inkscape, and Gimp all the way to many system administrator tools.

Now, we need your help! Let’s make this the coolest and most beautiful Linux live image ever. We’re calling for submissions of artwork, themes, actually anything from a desktop background to a boot manager animation, on the topic of Gentoo! The winning entry will be added as default setting to the official LiveGUI images, and also be available for download and installation.

The artwork contest

What are we looking for?

Gentoo-themed artwork and branding material to make our Gentoo LiveGUI the coolest Linux live medium ever.

  • Incorporates the Gentoo logo and maybe other Gentoo design elements (like Larry the Cow)
  • Works for a wide range of screen resolutions etc.
  • Is packaged more or less ready-to-use for our LiveGUI image
  • Provides a coherent experience to the user, i.e., if it consists of different parts, these fit togehter
  • Can be distributed in its entirety under the CC BY-SA 4.0 license

We could for example imagine screen backgrounds, Plasma theming, maybe even a GRUB boot menu animation or a LibreOffice splash screen… Feel free to come up with more ideas.

If you base your work on freely available source material created by others, please keep track of the sources and their licenses in an accompanying readme file.

What are we not looking for?

  • Do not submit anything that infringes on third-party copyrights or trademarks. While a Star Trek-themed Gentoo desktop would be cool, Paramount might object and we wouldn’t be able to distribute it. Same for My Little Pony or the Simpsons.
  • Do not submit artwork falling under the not-safe-for-work (NSFW) category. We will recognize it when we see it, and we won’t be able to distribute it.
  • Do not submit artwork with political or religious statements. No matter how universally acceptable you think that these are, someone will be offended by them.

The artwork should be such that kids or colleagues can walk into your office and you don’t have to quickly cover it up. :) Also, please think of your contribution in terms of the Gentoo Code of Conduct.

How to submit an entry

Package it up
  • Package all the relevant files into a single tar archive and upload it to a webserver of your choice, or publish the files (e.g. on github) as a single git repository.
  • Add a readme file with your name and contact e-mail address, the license of the files, sources and licenses for third-party material, and detailed installation instructions
  • File a bug for the release engineering team, component “LiveCD/DVD”, with the summary starting with “Artwork 2022 contest entry”, and add a link to your file.
  • If you link to a git repository, please mention a tag or commit which we should use.
  • By submitting your entry, you allow Gentoo to download, re-publish, and distribute your files (see also above remark about the license).
Deadline
  • The contest ends 31/May/2022 at 23:59 UTC.
  • Please keep your files online for at least one more month after that date, so we can review and copy them.

Selection and announcement of the winner

  • The jury consists of the Gentoo Council, the Release Engineering team, the Artwork team, and the Public Relations team (as of beginning of April 2022).
  • The winner will be chosen by vote; depending on the amount and quality of the submissions, we may also pick a runner-up or more.
  • The announcement of the winner or the winners will be made in June.

The LiveGUI image

The LiveGUI image is first and foremost provided to show off Gentoo and give everyone a chance to test a full-fledged Gentoo installation. As such, we have a lot of typical “desktop applications” installed. Additionally, we tried to integrate as many system administration tools as possible, so you can also use it for everything from repartitioning your hard drives to repairing an installation.

Some of the software on the image:

  • KDE Plasma as desktop environment
  • Office productivity: LibreOffice, LyX, TeXstudio, XournalPP, kile
  • Web browsers: Firefox, Chromium
  • IRC and similar: irssi, weechat
  • Editors: Emacs, vim, kate, nano, joe
  • Development and source control: git, subversion, gcc, Python, Perl
  • Graphics: Inkscape, Gimp, Povray, Luminance HDR, Digikam
  • Video: KDEnlive
  • Disk management: hddtemp, testdisk, hdparm, nvme-cli, gparted, partimage, btrfs-progs, ddrescue, dosfstools, e2fsprogs, zfs
  • Network tools and daemons: nmap, tcpdump, traceroute, minicom, pptpclient, bind-tools, cifs-utils, nfs-utils, ftp, chrony, ntp, openssh, rdesktop, openfortivpn, openvpn, tor
  • Backup: mt-st, fsarchiver
  • Benchmarks: bonnie, bonnie++, dbench, iozone, stress, tiobench

The list of targeted packages (corresponding to a world file) can be found in the catalyst specification file; we install the newest stable version in the Gentoo repository.

In addition, since - as in a normal Gentoo installation - compiler and development tools are available, you can temporarily install more software. Just run emerge --sync and then install whatever you need (though it will be kept in memory and be gone after the next reboot).

Feedback and of course bug reports are welcome! Enjoy!

Friday, 1 April 2022

Let’s go for my web review for the week 2022-13.


Microsoft is tied to hundreds of millions of dollars in foreign bribes, whistleblower alleges

Tags: tech, microsoft, ethics

Wow… that’s a lot of bribery and sloppy behavior. Almost surprising it slipped through, at such a scale it’s a matter of time before it gets noticed.

https://www.theverge.com/2022/3/25/22995144/microsoft-foreign-corrupt-practices-bribery-whistleblower-contracting


Life off social media, six months in - Silvia Maggi

Tags: tech, social-media

I like the noise metaphor it briefly mentions. It’s indeed similar, you’re within constant noise, you don’t notice it anymore but still when it stops you feel relieved. The benefits listed are indeed to be expected.

https://silviamaggidesign.com/personal/life-off-social-media/


The principles and habits of healthy software

Tags: tech, tech-lead, design, architecture, complexity, habits, craftsmanship

This article is spot on in my opinion. This resonates so much with my own experience and ethos… I guess I could have written that if my prose was any good.

https://leaddev.com/building-better-software/principles-and-habits-healthy-software


The Code Review Pyramid - Gunnar Morling

Tags: tech, programming, codereview

Interesting way to see where to spend time in reviews.

https://www.morling.dev/blog/the-code-review-pyramid/


COPY --chmod reduced the size of my container image by 35%

Tags: tech, docker

OK, that’s indeed an easy mistake to make with docker and how it uses OverlayFS.

https://blog.vamc19.dev/posts/dockerfile-copy-chmod/


How Go Mitigates Supply Chain Attacks - The Go Programming Language

Tags: tech, go, supply-chain, security

Admittedly, the go toolchain seems to handle supply chain problems in a neat way. I especially like the VCS as the source of truth.

https://go.dev/blog/supply-chain


An Intuitive Guide to Linear Algebra – BetterExplained

Tags: mathematics, linear-algebra

Good refresher about linear algebra. I see it so underused in projects that really we need good resources to embark people into using linear algebra more.

https://betterexplained.com/articles/linear-algebra-guide/


NeRF Research Turns 2D Photos Into 3D Scenes | NVIDIA Blog

Tags: tech, ai, 3d

This sounds like it could be a game changer for some uses including robotics or XR. Will need to look at this deeper.

https://blogs.nvidia.com/blog/2022/03/25/instant-nerf-research-3d-ai/


How many jobs can be done at home? - ScienceDirect

Tags: tech, economics, remote-working

Interesting paper, shows a surprisingly large percentage of jobs doable from home. Also shows that the frontier between doable or not seems to be at least partly related to inequalities. If you already have high wages, you got higher chances of having the privilege to work from home.

https://www.sciencedirect.com/science/article/pii/S0047272720300992


Mourning Loss of a Team Member as a Remote Team

Tags: remote-working, management, hr

This stresses how important to put specific procedures in place regarding remote workers. It’s in particular essential to have emergency contacts on both sides.

https://www.sofuckingagile.com/blog/mourning-loss-as-a-remote-team



Bye for now!

Tuesday, 29 March 2022

Hey there!

This is my fifth status update for Season of KDE 2022.

This time, I have updates on the automation side of things. I got a preliminary version of the required GitLab pipelines working.

Pipeline for Updating Manifests

I got my hands dirty with Docker and added the Flatpak External Data Checker image over on Quay. The image was used over on my Gitlab repositories. This let me run "actions", similar to what we have on GitHub, but on GitLab too. Since we're not relying on the official FEDC image, I can control what all goes into the image and add extra dependencies that would be required. (like curl)

Currently, the script is in bash. I plan to port it to Python, as it will be much easier to maintain and work with.

The script is expected to loop through all manifests in the repository and run FEDC on each one of them while capturing FEDC output to detect which packages have been updated. It then does some cleanup and sorts it to get the final list. With all the changes, it will finally commit and create a merge request over on the repository. To avoid creating multiple merge requests for the same set of updates, the script will check if there is an existing merge request already. To help in this, it adds a short hash in the merge request title, which lets it cross-check the set of updates and decide whether to create a new merge request or not.

The repository can be found here -> https://gitlab.com/flyingcakes/kde-flathub-master. Actual update script is in the updater.sh file in this repo.

Pipeline for Application CI

To goal here is to do a Flatpak build for KDE applications whenever they receive a new commit or merge request. We currently have similar CI pipelines running, but they are only for FreeBSD and OpenSuse. I plan to add a third job there, which will build the application inside Flatpak environment, and provide a way to install and test those builds on a local machine.

The inspiration for this has been taken from similar pipelines that run on Gnome GitLab. In essence, on every run, we fetch the application's Flatpak manifest, replace its source link with the latest commit and try a build. If the build succeeds, we upload its .flatpakref file as an artefact.

My implementation for this is still in an alpha phase and will need some more work to become viable for regular use on KDE applications.

The testing repository for this can be found here -> https://gitlab.com/flyingcakes/kdiff-v2/

Follow up on Checker Data Additions on GitHub

In my last post, I described how I'm adding checker data to manifests hosted on GitHub. I have added the data to most applications. The bigger ones like Krita and KdenLive are still missing data. This should be fixed in due time.

We noticed some issues with it, which seems to be related to FEDC itself. It sometimes creates repeated pull requests for the same package.

Other issues were caused because I had inadvertently provided wrong links in checker data.

None of the issues caused any inconvenience though. The maintainers have been thoroughly verifying pull requests to ensure nothing unexpected goes into the actual application. I fixed those minor issues as and when we got to know about them.

Adding checker data

Other minor fixes

Friday, 25 March 2022

Let’s go for my web review for the week 2022-12.


Amazon intentionally made it difficult to cancel Prime subscription in secret project | The Independent

Tags: amazon, gafam, design

Prime example of dark patterns in the wild (pun intended).

https://www.independent.co.uk/tech/amazon-prime-subscription-cancel-secret-project-b2038207.html


Web3 is centralized (and inefficient!)

Tags: tech, blockchain, web3, scam

Yet another (well deserved) rant aiming at web3. The decentralized claim is indeed preposterous. I hope no one is being fooled.

https://www.neelc.org/posts/web3-centralized/


All The Music: the Megamix

Tags: tech, legal, commons, culture, music

Very interesting initiatives… I wonder what they will lead to legal wise.

https://www.royvanrijn.com/blog/2022/03/all-the-music-megamix/


Support open source that you use by paying the maintainers to talk to your team

Tags: tech, foss, sustainability

Now that’s an interesting idea to give back money to maintainers… can be sustainable only if enough company do this on a regular basis though.

https://simonwillison.net/2022/Feb/23/support-open-source/


Why Don’t You Use …

Tags: tech, supply-chain, architecture, complexity, community

Interesting list of criteria about why you might not use some piece of tech. Also delves into why this is often not public knowledge.

https://www.brendangregg.com/blog/2022-03-19/why-dont-you-use.html


Decrypting your own HTTPS traffic with Wireshark – Trickster Dev

Tags: tech, tcp, debugging

Interesting tip to ease the pain of dealing with HTTPs when using Wireshark.

https://www.trickster.dev/post/decrypting-your-own-https-traffic-with-wireshark/


6 Universal Readable Code Tricks To Improve Your Coding Skills • Python Land Blog

Tags: tech, programming, craftsmanship, static-analyzer

Bunch of good advice. In a way it boils down to: name things properly and use static analysis tools extensively. Still, couple of nice operational guidelines which work in most languages.

https://python.land/readable-code


Watch Enemies – State-of-the-art digital humans | Unity Demo

Tags: tech, 3d

Real-time rendering is catching up fast… Even humans are being very realistic now, we’re almost out of the uncanny valley now.

https://unity.com/demos/enemies


Dimensions of Power

Tags: team, sociology, politics, power

You think you don’t use power on others? Think again, this can be more subtle than you think. Keep it in mind, be mindful and try to use your advantages fairly.

https://medium.com/@kentbeck_7670/dimensions-of-power-15ac9fa0c590


First photos from James Webb telescope better than expected.

Tags: science, physics

Exciting times ahead. I’m eager to know what it’ll help us find out.

https://cosmosmagazine.com/space/exploration/first-photos-james-webb-telescope/



Bye for now!