Skip to main content

the avatar of Federico Mena-Quintero

Some thoughts on linking to code

I have been updating the text layout roadmap for librsvg, and part of this involves describing how some of the current code works — for example, how a <text> element gets broken up into a tree of Chunk and Span structures.

Notice how those links go to the generated documentation for the library's internals. In the HTML, rustdoc adds "source" links that in turn take you to the actual source code for that item.

Aside: Chunk has documentation, but Span doesn't; I haven't gotten around to writing it yet. Linking to the documentation for the library's internals helps me see what things are undocumented yet. Maybe a struct Point { x: f64, y: f64 } doesn't need much documetation, but something more complicated like Span definitely does!

Another way of linking to these items would be to link to the actual source for Chunk and Span. Those links go to the HTML version of the source code in GitLab, for a specific commit.

For example, the link to Chunk is https://gitlab.gnome.org/GNOME/librsvg/-/blob/4cd62ad9/src/text.rs#L48-66 and it breaks down like this:

  • gitlab.gnome.org - the server, obviously
  • GNOME - group name
  • librsvg - project name
  • blob/4cd62ad9 - prefix of the git commit id
  • src/text.rs#L48-66 - the file in the librsvg source tree, plus a fragment identifier so that GitLab will highlight a range of source lines.

Obtaining that link takes a bit of work:

  • Go to the project page. Navigate down to the file you want. (Tip: hit t and start typing the filename; you'll get an autocompletion list.)

  • If you are in the wrong branch, change it at the top of the page. Note that the URL is something like .../blob/main/src/my_file.txt

  • Click on the Permalink button near the top of the page. This changes the URL to the actual latest commit id, i.e. blob/123abc/src/...

  • Go to the lines to which you want to link. Click on the first line's number, Shift-click on the second line's number. This changes the URL to a range of lines, with a fragment identifier like #L12-34.

I generally do that when writing descriptions that refer to source lines in specific revisions. Of course, if the code changes, the description may need updating if it's a "permanent" document — but at least there are hopefully never broken links, or links to source code that no longer matches the description.

The first method — linking to the documentation for the library's internals — has the advantage of being actual documentation, with a link to the source code as a bonus. I would probably prefer it if rustdoc generated links to GitLab's display of sources, instead of generating its own embedded copy of the source code, but it's not a big deal.

The second method, linking to specific revisions in GitLab's source view, is perhaps more direct when you want the reader to see the source code immediately, but it's not as easy to navigate. The reader has to read the source and there is no way in GitLab to easily jump to symbol definitions, for example, or to find the implementations for a struct's methods. The generated rustdoc has all that.

Finally, in real-time conversation, I may just link to the blob/main URLs for whatever the latest revision is at the time. I expect my interlocutor to look at the link basically immediately, or really soon after our conversation, so it will show the same context as I was thinking about.

I suppose each method has its place:

  • Link to the generated documentation for the source code — Friendly to the reader if they need more context; good for high-level exploration. Links can go out of date if you rename symbols (we don't store generated docs for each revision).

  • Link to blob/123abc or a specific revision — unambiguous, good for descriptions of code at a specific point in time, and the reader can easily cut&paste that commit id to the git command line or other tooling.

  • Link to blob/main or the latest revision in some branch — easy to do; only takes the GitLab dance to find the line numbers. Good for casual conversation. May remain current for a long time in "permanent" documentation if you are describing code very generally and that code doesn't change a lot.

the avatar of Nathan Wolf

the avatar of Nathan Wolf

Linux Saloon in 2023

Linux Saloon, the Tux Digital online Linux User Group, is returning for a live show on the 14th of January and I am quite excited for it. In an effort to improve things a bit. I have taken the time to better focus my organization effort of the show. I have set up a public […]
a silhouette of a person's head and shoulders, used as a default avatar

Better Application Menu, otro lanzador de aplicaciones para KDE – Plasmoides de KDE (215)

Seguimos con los lanzadores de aplicaciones para KDE, de los cuales tenemos indexeados en la KDE Store ya 35 de ellos. En esta ocasión os presento Better Application Menu, otro lanzador de aplicaciones para KDE, el plasmoide 215 de esta serie de miniaplicaciones que se une a la ingente cantidad de plasmoides de este tipo presentados en el blog.

Better Application Menu, otro lanzador de aplicaciones para KDE – Plasmoides de KDE (215)

Seguimos con las posibilidades de personalización de Plasma 5 en cuanto a lanzadores de aplicaciones. Al nuevo lanzador que nos vino con Plasma 5.21, a su versión clásica que podéis encontrar en la KDE Store, y a la infinidad de alternativas que tenemos (UMenu, Minimal Menu, Simple Menu , Ditto Menu ,Popup Launcher, Stupid Simple Launcher o OSXLaunchpad) se unen inspiraciones de otros sistemas operativos como el que os presento hoy.

Así que espero que le deis la bienvenida a un plasmoide de llamado Better Application Menu, creado por himdek, y que se trata de una alternativa desarrollada a partir de Kicker Application Menu, un lanzador basado en menús emergentes en cascada que ha simplificado sus diseño se ha simplificado a la vez que se han mejorado las funciones de búsqueda y la personalización.

Y como siempre digo, si os gusta el plasmoide podéis «pagarlo» de muchas formas en la nueva página de KDE Store, que estoy seguro que el desarrollador lo agradecer?: puntúale positivamente, hazle un comentario en la página o realiza una donación. Ayudar al desarrollo del Software Libre también se hace simplemente dando las gracias, ayuda mucho más de lo que os podéis imaginar, recordad la campaña I love Free Software Day de la Free Software Foundation donde se nos recordaba esta forma tan sencilla de colaborar con el gran proyecto del Software Libre y que en el blog dedicamos un artículo.

Más información: KDE Store

¿Qué son los plasmoides?

Para los no iniciados en el blog, quizás la palabra plasmoide le suene un poco rara pero no es mas que el nombre que reciben los widgets para el escritorio Plasma de KDE.

En otras palabras, los plasmoides no son más que pequeñas aplicaciones que puestas sobre el escritorio o sobre una de las barras de tareas del mismo aumentan las funcionalidades del mismo o simplemente lo decoran.

La entrada Better Application Menu, otro lanzador de aplicaciones para KDE – Plasmoides de KDE (215) se publicó primero en KDE Blog.

a silhouette of a person's head and shoulders, used as a default avatar

10 años sin Aaron Swartz, pero su legado sigue vivo

Aaron Swartz murió un 11 de enero de 2013 con solo 26 años. 10 años después sigue siendo vigente reivindicar su compromiso por una red y un conocimiento libre

En estos 10 años de la pérdida de un HACKER (sí con mayúsculas) como fue Aaron Swartz mucho se ha dicho de su figura, de sus acciones, de los conocimientos y mejoras que desarrolló o en las que participó en su desarrollo.

Tanto su manifiesto, como el documental sobre su (corta pero intensa) vida hablan y nos muestran todo lo que le debemos: licencias libres, formato de texto markdown, RSS, openlibrary, Reddit, oposición a leyes que querían restringir derechos a conocer y compartir, etc…

Fue una persona comprometida, que aportó sus conocimientos para el bien común, pero que no se quedó solo detrás de un teclado. Pasó a la acción, reivindicando el conocimiento libre y oponiéndose a leyes restrictivas en la red.

En estos tiempos de ahora donde los «emprendedores» que tienen una idea genial y la venden para hacerse millonarios, son los ejemplos que se promocionan y se ofrecen como símbolos de éxito. Aaron fue alguien totalmente opuesto a esa visión de la «cultura del pelotazo» de las tecnológicas.

Fue un hacker que buscaba y perseguía el conocimiento y la manera de hacerlo extensible a todas las personas. Solo con toda la información disponible podrás tener una opinión más formada. Y todo eso lo hizo no como medio de hacerse multimillonario, si no porque verdaderamente creía en ello.

Un conocimiento, a diferencia de una propiedad física, puede ser compartido por grandes grupos de personas sin empobrecer a nadie

Aaron Swartz

Su legado y sus ideas, en un mundo como este de la tecnología, donde pronto las cosas se quedan obsoletas, siguen vigentes, lo que me hace pensar que Aaron fue un visionario y adelantado a su tiempo.

Hoy, después de 10 años desde su muerte, internet ha cambiado mucho y esta ha cambiado a la sociedad. La red se ha centralizado en manos de un puñado de empresas tecnológicas que han pervertido el uso de la red y unos gobiernos que la han utilizado para ficharnos y clasificar los metadatos que generan nuestra cada vez más habitual presencia en internet.

Quizás no haya retorno a aquellos tiempos, o quizá si haya reductos en los que se sigan dando a conocer la historia de grandes hackers como Aaron y muchas otras personas que hicieron lo correcto y lucharon por ello, no por reconocimiento, dinero y fama. Si no por un convencimiento personal que los llevaba a creer que había una libertad y unos derechos que había que seguir peleándolos, en este caso en la red.

No se promociona el esfuerzo y el pensamiento crítico, se promociona un «scroll» infinito de vídeos sin sentido que adormecen conciencias y nos abotargan los sentidos con dopamina tecnológica.

Es hora de descentralizar las aldeas de irreductibles hackers, y difundir a las nuevas generaciones que hay otra realidad a la que tenemos derecho, tanto en la red como en la vida real.

Es hora de salir a la luz y, siguiendo la tradición de la desobediencia civil, oponernos a este robo privado de la cultura pública.

Aaron Swartz
a silhouette of a person's head and shoulders, used as a default avatar

Syslog-ng 101, part 4: Configuration and testing

This is the fourth part of my syslog-ng tutorial. I hope that since the previous part of my tutorial, you successfully installed syslog-ng. In this part we will finally work with syslog-ng, not just learn about the theoretical background. We will do basic configuration and testing.

You can watch the video on YouTube:

Or you can read the rest the tutorial as a blog at: https://www.syslog-ng.com/community/b/blog/posts/syslog-ng-101-part-4-configuration-and-testing

syslog-ng logo

a silhouette of a person's head and shoulders, used as a default avatar

Persiapan Kuliah S2 MSIT Semester Dua

Hari Senin 9 Januari 2022 kemarin saya mulai kuliah kembali untuk periode semester dua untuk program master MSIT. Sama seperti semester satu, ada lima mata kuliah yang akan saya ikuti, yaitu :

Senin : Machine Learning
Selasa : Ethical Hacking and Cyber Security
Rabu : Intelligent Search Engine
Kamis : BIg Data Analytics
Jum’at : Voice and Image Recognition

Mekanisme kuliahnya masih full online, namun dengan beberapa aturan yang lebih ketat. Salah satunya misalnya kewajiban untuk on cam (turn on camera) selama kuliah dilakukan. Hal ini membuat saya mesti jaim selama beberapa jam, hehehe…

Ada mata kuliah yang menurut saya terbalik formasinya (seharusnya didapat di semester sebelumnya), yaitu mata kuliah Machine Learning. Machine Learning menjadi dasar bagi mata kuliah Business Intelligence yang saya dapatkan di semester satu, padahal mata kuliah Machine Learning baru didapatkan di semester dua ini 🫣. Mungkin pihak kampus punya pertimbangan sendiri mengenai hal ini.

Ada beberapa mahasiswa baru yang juga ikutan bergabung di kelas baru ini. Mereka dari batch baru dan bagi mereka, semester ini merupakan semester pertama. Sebagian besar merupakan mahasiswa yang bekerja di sekitar Jababeka. Ada yang merupakan alumni President University dan ada juga alumni dari kampus lain.

Belajar dari pengalaman di semester lalu, saya berusaha lebih disiplin di semester ini. Misalnya jika ada tugas, saya berusaha untuk langsung menyelesaikannya pada kesempatan pertama, tidak ditunda hingga mepet waktu.

Tantangan lain adalah waktu olah raga saya jadi lebih sempit. Saya mesti olah raga di pagi hari sebelum Shubuh atau di sore hari sebelum kuliah atau sekalian malam hari setelah kuliah. Bisa juga saya olah raga di siang hari saat bekerja di markas Excellent. Prinsipnya, saya harus bisa menyeimbangkan masing-masing kegiatan yang saya lakukan.

Kuliah di semester dua ini berarti mengembalikan saya ke ritme kegiatan di 3-4 bulan kemarin, yaitu fokus di kuliah dan jadi jarang bisa kelayapan secara leluasa, terutama di hari kuliah atau di malam hari. Tidak apa-apa, memang mesti ada beberapa hal yang perlu disesuaikan selagi kita berusaha mencapai tujuan yang diinginkan.

a silhouette of a person's head and shoulders, used as a default avatar

Mangga di Pekarangan Rumah Mantap Berbuah dalam Waktu 1 Tahun

Penanaman mangga di pekarangan rumah dapat memberikan banyak manfaat bagi kita. Tidak hanya membuat pekarangan terlihat hijau, sejuk, dan menyenangkan, penanaman mangga juga dapat memberikan hasil berupa buah mangga yang manis. Selain itu, penanaman mangga juga dapat mengurangi polusi udara dan meningkatkan kualitas udara di sekitar rumah.

Zeze Zahra menanam beberapa pohon mangga sekitar satu tahun yang lalu dan kini mangga yang ditanam di pekarangan rumah sudah berbuah. Seperti apa pohon dan buahnya? Yuk simak pada video singkat berikut ini :

the avatar of openSUSE News

openSUSE Conference Call for Papers is Open

The call for papers for openSUSE Conference 2023 is open!

The openSUSE Conference 2023 is scheduled to take place May 26 to May 28. The call for papers will close on April 9, which leaves 89 days to submit a talk.

The conference already has two sponsors with Fedora and SUSE. Companies interested in sponsoring the event can view sponsorship information on the project’s wiki page.

Presentations can be submitted for the following length of time:

  • Lightning Talk (10 mins)
  • Short Talk (30 mins)
  • Virtual Talk (30 mins)
  • Long Talk (45 mins)
  • Workshop (1 hour)
  • Virtual Workshop (1 hour)

The following tracks are listed for the conference:

  • Cloud and Containers
  • Community
  • Embedded Systems and Edge Computing
  • New Technologies
  • Open Source
  • openSUSE

The conference already has two sponsors with Fedora and SUSE. Companies interested in sponsoring the event can view the sponsorship prospectus on the project’s wiki page.

Volunteers who would like to help the Program Committee and/or the Organizing Team can email ddemaio@opensuse.org or attend normally scheduled community meetings. Check the notes for details.

The music festival Rock im Park will take place a week after the conference. Attendees for the conference are encouraged to book their hotel as soon as possible. Most Rock im Park visitors do not come the week earlier, but booking a hotel in advance is always recommended.

a silhouette of a person's head and shoulders, used as a default avatar

Primera actualización de Kdenlive 22.12

La Comunidad KDE anunció en diciembre que había sido lanzado KDE Gear 22.12, la gran actualización de sus aplicaciones que tiene una periodicidad cuatrimestral, dentro de este gran lanzamiento Kdenlive, el editor de vídeos no lineal de la Comunidad KDE, tuvo su protagonismo con un buen número de novedades las cuales deben ser pulidas. Es una buena noticia pues que haya aparecido la primera actualización de Kdenlive 22.12.

Primera actualización de Kdenlive 22.12

Podemos leer en la sección de noticias de Kdenlive que ha recibido la primera versión de mantenimiento de la serie 22.12.,

Esta actualización trae consigo algunas pequeñas novedades como el soporte para archivos proxy Akaso y una pequeña mejora en la pausa / reproducción de audio.

Entre las solución de errores, más de 30, destacan correcciones a la representación de la vista previa de la línea de tiempo, copiar/pegar /mover fotogramas clave en el efecto rotoscópico, mover clips en niveles de zoom bajos y evitar problemas de superposición con fondos de subtítulos con alfa.

Más información: Kdenlive

Primera actualización de Kdenlive 22.12

Novedades de Kdenlive en KDE Gear 22.12

Para quienes no lo conozcan, Kdenlive es el editor de vídeos no-lineal de KDE, una aplicación multiplataforma muy demanda por los usuarios de fácil uso y llena de posibilidades. Con cada lanzamiento su estabilidad ha superado los parámetros mínimos y su usabilidad está adaptada tanto a los recién llegados como a los usuarios más exigentes.

En esta nueva versión 22.12 nos ofrece jugosas novedades:

Novedades de Kdenlive en KDE Gear 22.12
  • Mejorado el sistema de guía/marcador con categorías personalizadas y filtros de búsqueda.
  • Mejorada su integración con otras aplicaciones de vídeo, siendo ahora es posible enviar líneas de tiempo de Kdenlive como fondos a la utilidad de animación vectorial Glaxnimate.
  • Adoptado la opción KHamburgerMenu, aunque seguirá viendo el menú normal predeterminado la primera vez que lance la aplicación y si se desactiva la barra de menú normal para ganar algo de espacio vertical, todas las opciones del menú se ocultarán bajo el botón de menú hamburguesa de la barra de herramientas.

Como estoy comentando últimamente si quieres ayudar a su desarrollo siempre puedes participar en su campaña de recaudación de fondos 2022, tu dinero sirve para que se desarrolle software libre y de calidad para todos y todas.

La entrada Primera actualización de Kdenlive 22.12 se publicó primero en KDE Blog.