Mecalin

Many years ago when I was a kid, I took typing lessons where they introduced me to a program called Mecawin. With it, I learned how to type, and it became a program I always appreciated not because it was fancy, but because it showed step by step how to work with a keyboard.

Now the circle of life is coming back: my kid will turn 10 this year. So I started searching for a good typing tutor for Linux. I installed and tried all of them, but didn’t like any. I also tried a couple of applications on macOS, some were okish, but they didn’t work properly with Spanish keyboards. At this point, I decided to build something myself. Initially, I  hacked out keypunch, which is a very nice application, but I didn’t like the UI I came up with by modifying it. So in the end, I decided to write my own. Or better yet, let Kiro write an application for me.

Mecalin is meant to be a simple application. The main purpose is teaching people how to type, and the Lessons view is what I’ll be focusing on most during development. Since I don’t have much time these days for new projects. I decided to take this opportunity to use Kiro to do most of the development for me. And to be honest, it did a pretty good job. Sure, there are things that could be better, but I definitely wouldn’t have finished it in this short time otherwise.

So if you are interested, give it a try, go to flathub and install it: https://flathub.org/apps/io.github.nacho.mecalin

In this application, you’ll have several lessons that guide you step by step through the different rows of the keyboard, showing you what to type and how to type it.

This is an example of the lesson view.

You also have games.

The falling keys game: keys fall from top to bottom, and if one reaches the bottom of the window, you lose. This game can clearly be improved, and if anybody wants to enhance it, feel free to send a PR.

The scrolling lanes game: you have 4 rows where text moves from right to left. You need to type the words before they reach the leftmost side of the window, otherwise you lose.

For those who want to support your language, there are two JSON files you’ll need to add:

  1. The keyboard layout: https://github.com/nacho/mecalin/tree/main/data/keyboard_layouts
  2. The lessons: https://github.com/nacho/mecalin/tree/main/data/lessons

Note that the Spanish lesson is the source of truth; the English one is just a translation done by Kiro.

If you have any questions, feel free to contact me.

Posted in Uncategorized | Leave a comment

Servo GTK

I just checked and it seems that it has been 9 years since my last post in this blog :O

As part of my job at Amazon I started working in a GTK widget which will allow embedding a Servo Webview inside a GTK application. This was mostly a research project just to understand the current state of Servo and whether it was at a good enough state to migrate from WebkitGTK to it. I have to admit that it is always a pleasure to work with Rust and the great gtk-rs bindings. Instead, Servo while it is not yet ready for production, or at least not for what we need in our product, it was simple to embed and to get something running in just a few days. The community is also amazing, I had some problems along the way and they were providing good suggestions to get me unblocked in no time.

This project can be found in the following git repo: https://github.com/nacho/servo-gtk

I also created some Issues with some tasks that can be done to improve the project in case that anyone is interested.

Finally I leave you here a the usual mandatory screenshot:

Posted in Uncategorized | 5 Comments

Wing

Wing is a library which provides GLib-like API to some Windows API.

The goal of this library is twofold:

  • provide GLib-friendly integration points with Windows specific concepts
  • be a testing ground for API that may be included in GLib/GIO/Gtk+ once they are proven to be generally useful

Currently it already provides api for:

  • Named pipes
  • Windows services
  • A GSource to poll from windows handles
  • Utilities to get the type of operating system and the version.

You can find the git repository in: https://git.gnome.org/browse/wing

As usual if you are interested in this library, patches are very welcomed.

 

Posted in Uncategorized | 3 Comments

Visual Studio/gtk-win32 status

As you may know gtk-win32 is our build system that makes it easy to build all the GTK+ stack with Visual Studio. This blog will try to sum up some of the changes and updates that happened during the last few months:

  • gettext has been updated to the version 0.19.7. It is still a bit of a pain to get it updated but Fan provided the new visual studio projects and the downstream patches required for it to build properly. He also told me that things are changing upstream so soon we will probably be able to build it directly from an upstream tarball.
  • We have added the possibility to build Debug or Release versions of the projects. Before only release versions were built, but as you may know Visual Studio will use different runtimes depending on whether you have release or debug so to avoid problems it is suggested to always use the same runtime for all the dependencies of your project.
  • cairo, pixman, libxml2, harfbuzz, libpng are now using the upstream build system. This makes our life easier to update them.
  • We have updated to the last version all the projects.
  • Added support for Git projects. This allows to build from a clone instead of from a tarball.
  • Created a new library called Wing. It provides utilities that are windows specific. To highlight some of them, Named pipes or Windows services.
  • New projects have been added: json-glib, grpc, json-c, leveldb, libmicrohttpd, libssh, libssh2, protobuf, protobuf-c, x264, FFmpeg, lz4, adwaita-icon-theme, cogl, clutter, gtksourceview, libjpeg-turbo, libcurl, libuv, libyuv, libzip.

Feel free to give it a try and make a pull request if there is any library or application that you are missing on gtk-win32. Specially I would really like to see there GStreamer.

Posted in Uncategorized | 3 Comments

We are hiring

In march, NICE was acquired by Amazon, as part of that I became an Amazon employee and since then with my colleagues we kept improving our High Performance Computing and remote visualization technologies. If you would like to get an opportunity developing one of the most innovative and performant remote desktop solutions in the market and help us to make 3D applications first class citizens in the Cloud, please have a look at our offers and please do not hesitate to contact me or Paolo if you need more information.

Our current offers can be found here: https://www.amazon.jobs/it/locations/asti-italy

In addition to the skills listed in the announcements, a deep knowledge of the Linux graphic stack (X, OpenGL, Wayland, etc.) will be very appreciated.

Posted in Uncategorized | Leave a comment

gitg 3.20.0 for Windows

gitgApart from the release of gedit introduced on the previous post. Here you can see the last release of gitg running on Windows. There are still some minor problems with it but it is already working good enough for a daily usage. Also, it integrates with the context menu so you can right click on a folder and open it with gitg which will open the repository if it is a repository or fallback to the dash if it is not.

Download the the installer of gitg from this link.

Posted in Uncategorized | Leave a comment

gedit 3.20.1 for Windows

It wasn’t without time but I am finally proud to say that we have a new version of gedit for Windows. This was a long road getting GTK+ 3 and all the dependencies properly working and there are a lot of people behind this, so thanks to all of them for the hard work.

To download the new installer follow up this link.

Posted in Uncategorized | 14 Comments

Visual Studio status for GTK+ builds

Following up with Emmanuele’s blog posts about GTK+ being “dead” or “dying” I wanted to point out about the status of the MSVC builds for the GTK+ stack. Refer to my previous post to understand how to build it. During this cycle quite a few things have been done in order to further improve the status of the Visual Studio builds.

  • The packages have been updated in order to build GTK+ 3.18. This took longer than expected since we actually had to stick with 3.14 until we are finally able to build libepoxy which was the missing dependency in order to build GTK+ > 3.14
  • The builder is slowly starting to get support for VS 2015. This is not so easy since we had to fix glib to not use constructors but to use a DllMain. We added a patch to this bug to finally support this properly.
  • GTK+ 3.18 depends on an unreleased version of cairo. This means that we had to put some patches downstream in order to be able to build this last version of GTK+. We hope to have a new version of cairo soon though.
  • libsoup has got support for msvc projects as well as gsettings-desktop-schemas. A release is needed in order to get them into the builder.
  • glib-networking has a wip branch that adds support for msvc projects as well as TLS support for windows using openssl. For more details on this you can refer to my previous post about this.
  • libepoxy was fixed upstream in order to build with msvc, although there are still no msvc projects upstream so we had to add them to the builder.
  • We are still using an old version of harfbuzz but we are working in order to get new projects that will build the last version. This should also improve the situation for other projects depending on it, like mozilla projects or libreoffice.
  • librsvg got support for msvc projects and Federico already made a new release. Now it is just a matter of integrating it in the builder.
  • libdb and cyrus-sasl have been added to the builder.
  • libffi is now up to date on the builder.
  • gobject-introspection got also support for msvc. This is a bit more problematic to get integrated in the builder but we hope to get it done soon.

As usual Chun-wei Fan is the one to thank for keeping the msvc projects up to day and for adding the new ones.

Posted in Uncategorized | 6 Comments

Openssl backend for glib

I would like to officially announce that at NICE we have been working on a TLS backend for glib using Openssl. This still lives on the wip/openssl branch of glib-networking but hopefully next cycle we will manage to merge it to master.

Why are we not using the gnutls that is already implemented? There are a few reasons for it:

  • We needed TLS support on Windows. You may say, but gnutls is built on windows with mingw! Well, we are using Visual Studio and it does not build with it.
  • Our product has to run at least on RHEL 6, which means, we would have needed to port the current gnutls backend to the old version shipped there, it would have been possible but at the end of the day we wanted to have the same code base on both platforms.
  • We depend also on cyrus-sasl which already depends on openssl, so we didn’t want to ship two TLS backends and have twice the bugs.

During the time that I spent implemented this backend I came to the conclusion that TLS is really hard! And it would have been harder if glib-networking didn’t have all those great unit tests. Thanks to all the people that wrote them.

Posted in Uncategorized | 10 Comments

Minimap for gedit

minimap

As you may know Christian Hergert introduced a first version of the minimap for gnome-builder. During the last few days we were working on getting it merged into GtkSourceView and it was pushed to it a few days ago. Now as a final step I added it to gedit. This was one of those features that were requested for a long time so we hope that you will enjoy it!

 

Posted in Uncategorized | 10 Comments