Jitsi: Turning off Automatic Gain Control
TL;DR
Operating systems let you customize the sensitivity of the microphone allowing you to suppress environmental noise such as keyboard strokes. Video conferences software unfortunately tends to override such settings using autogain making your customization void. While some video conferencing tools let you control autogain via the settings, Jitsi does not have such an option.
However, you can use https://your.jitsi.server/someroom#config.disableAGC=true when joining your Jitsi meetings to disable autogain and have more control over your microphone.
Digest of YaST Development Sprint 118
It has been three weeks since the previous development report from the YaST Team. That’s one week more than our usual cadence, since most of the team was booked during four days in an internal SUSE workshop. But fear no more, we are back and loaded with news as usual. This time we bring:
- Support to enable and configure SELinux during installation
- A revamped interface for configuring wireless network devices
- Usability improvements in several areas
- A new “hidden level” in the installer with advanced tools ;-)
You may know that both the SUSE and openSUSE families of operating systems include container-oriented members, namely openSUSE MicroOS and SLE Micro. In order to make them even more awesome, we got the request to make possible to propose and configure the usage of Security-Enhanced Linux, more widely known as SELinux, during the (auto)installation. This is a complex change affecting several parts of YaST and various versions of (open)SUSE, but you can get a good overview in the description of this pull request which includes some screenshots that may be worth a thousand words. Right now, the feature may look different on each one of the distributions due to the different state of SELinux on them. While in SLE Micro the new setting is visible during installation and activated at its more restrictive level, in others it may look more permisive or even not be presented at all. We expect things to consolidate during the upcoming weeks.
And talking about things that take their time, for a long time we had wanted to improve the usability of the configuration of wireless network adapters. Finally we found the time to reorganize the corresponding tab in the YaST Network module, improving the mechanism to select a wireless network and automatically pre-filling as much information as possible. You can see the result in the following animation and in the detailed pull request with the usual before-and-after screenshots.
That’s not the only usability improvements we implemented during this sprint. Now the Partitioner offers more useful information about file-systems that need to be unmounted in advance and presents a more sensible initial state for the collapsable branches in its tables. YaST Network permits to tweak the virt bridge interface during manual installation and reports AutoYaST errors more nicely. Last but not least in the usability field, we improved how long texts are managed and presented in most YaST pop-up dialogs.
If you are still not impressed with all the new things this sprint brought, we can give you a sneak peak on something we have been preparing lately to give power-users more… er… power. ;-) As you all know, YaST is already a pretty advanced installer offering many options. And it’s very configurable so it can be tweaked to behave differently depending on the distribution, the product or the system role selected by the user. But believe it or not, we still face situations in which we would like to configure the installer even more during its execution to overcome some obstacle found in a very special scenario or just for debugging purposes. How do we plan to do it? Meet the new YaST installation console, available through the even newer installer configuration screen!
While we dive into the beta phase of openSUSE Leap 15.3 and SLE-15-SP3, the YaST Team will focus during the next weeks in fixing the bugs found by the testers of those upcoming distributions, which implies we cannot give you a fixed date for the next development report, but it will be for sure during March. Meanwhile, stay tuned and do not hesitate to report any significant bug you can find in YaST or in openSUSE in general. See you soon(ish)!
Slimbook se convierte en patrocinador de KDE
Como buen blog sobre KDE me tengo que hacer eco de esta noticia, aunque no sea primicia y haya aparecido en otros sitios como MUy Linux.Y es que es importante para conocer un poco mejor como funciona la fundación KDE y cómo seguir constatando que poco a poco más y más empresas creen que la colaboración con el Software Libre es algo que beneficia a todos y todas. Así que congratula comentar que Slimbook se convierte en patrocinador de KDE, en otras palabras, una nueva voz con voto en el desarrollo del proyecto KDE… y una voz que es bastante conocida en este humilde blog.
Slimbook se convierte en patrocinador de KDE
El pasado jueves 25 de febrero de 2021 se anunció oficialmente que KDE tiene un nuevo patrocinador. Se trata de Slimbook una empresa que se dedica a ensamblar todo tipo de dispositivos (portátiles ligeros pero potentes, dispositivos All-in-One, portátiles gamers, torres espectaculares, minipcs, etc) 100% compatibles con los sistemas GNU/Linux. En el blog he hablado mucho de ellos, así que solo tenéis que seguir este enlace para conocerlos a fondo… solo añadiré que son más que una empresa.
Así que me llena de alegría conocer que Slimbook se convierte en un patrocionador del projecto de la Comunidad KDE aportando su visión empresarial al desarrollo de las tecnologías libres KDE, un paso más en la gran relación que ha tenido la empresa con la Comunidad y que ha tenido sus frutos en los KDE Slimbook.

Este anuncio ha llenado de satisfacción tanto al Presidente de KDE e.V. Aleix Pol y a Alejandro López, CEO de Slimbook, cuyo trabajo conjunto es el responsable de la aparición de los dispositivos antes mencionados.
De esta forma Aleix ha comentado que «la atención de Slimbook hacia los usuarios de FOSS como proveedor de hardware es muy importante para KDE y la comunidad en general. Para KDE, poder llegar más allá de la experiencia del software a soluciones tangibles y debidamente integradas ha sido un sueño hecho realidad. Trabajar juntos en las diferentes colaboraciones a lo largo de los años ha sido realmente emocionante, y esperamos seguir haciéndolo con Slimbook como patrocinador.»

Por otra parte, Alejandro López explicó que «Desde nuestros inicios en 2015, en SLIMBOOK nos esforzamos al máximo no solo por vender hardware de calidad compatible con GNU/Linux, sino también por contribuir y ayudar a los que hacen Software Libre y de Código Abierto.
Nuestra variedad de contribuciones van desde dar apoyo a grupos locales de desarrolladores, la realización de foros y tutoriales para ayudar a la comunidad Linux y compartir una visión común con KDE, para llegar al mercado con un dispositivo capaz de proporcionar al usuario final la mejor experiencia de Linux out-of-the-box disponible.

Pero nuestra misión no termina ahí y hay más de lo que parece. Nuestro principal objetivo es compartir nuestro conocimiento y experiencia, ayudarnos mutuamente y, por supuesto, dar a los usuarios de GNU/Linux lo mejor en excelencia de hardware de la misma manera que el equipo de KDE lo hace con su excelente experiencia de software.
Nos tomamos nuestro deber de apoyar a la Comunidad KDE con mucho orgullo, y nos sentimos honrados de ser Patronos de KDE».
De esta forma, Slimbook se une a otras compañías en su alianza con KDE: The Qt Company, SUSE, Google, Blue Systems, Canonical, Private Internet Access y enioka Haute Couture para continuar apoyando el Software Libre y el desarrollo de los proyectos KDE a través de KDE e.V.
Más información: KDE.News
Call for Papers Open for openSUSE Conference
The call for papers for the openSUSE Virtual Conference is open!
The call for papers is open until May 4. This leaves a little more than 60 days to submit a proposal. The dates of the conference are scheduled for June 18 - 20. Registration for the conference has also begun.
Presentations can be submitted for the following length of time:
- Lightning Talks (15 mins)
- Normal Talk (30 mins)
- Long Talk (45 mins)
- 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.
LCD Chalkboard Smart Sign, Raspberry Pi Powered
Revisiting Html in Java
Some time ago I wrote a post about creating an embedded dsl for Html in Java. Sadly, it was based on an abuse of lambda name reflection that was later removed from Java.
I thought I should do a followup because a lot of people still visit the old article. While it’s no longer possible to use lambda parameter names in this way, we can still get fairly close.
The following approach is slightly less concise. That said, it does have some benefits over the original:
a) You no longer need to have parameter name reflection enabled at compile time.
b) The compiler can check your attribute names are valid, and you can autocomplete them.
What does it look like?
html(
head(
title("Hello Html World"),
meta($ -> $.charset = "utf-8"),
link($->{ $.rel=stylesheet; $.type=css; $.href="/my.css"; }),
script($->{ $.type= javascript; $.src="//benjiweber.co.uk/some.js"; })
),
body(
div($-> $.cssClass = "article",
a($-> $.href="https://benjiweber.com/",
span($->$.cssClass="label", "Click Here"),
img($->{$.src="//benjiweber.co.uk/htmldsl2.png"; $.width=px(25); $.height=px(25); })
),
p(span("some text"), div("block"))
)
)
)
This generates the following html
Hello Html World
You get nice autocompletion, and feedback if you specify inappropriate values:
You’ll also get a helping hand from the types to not put tags in inappropriate places:

Generating Code
As it’s Java you can easily mix other code to generate markup dynamically:
assertEquals(
"""
Paragraph one
Paragraph two
Paragraph three
""".trim(),
html(
head(
meta($ -> $.charset = "utf-8")
),
body(
Stream.of("one","two","three")
.map(number -> "Paragraph " + number)
.map(content -> p(content))
)
).formatted()
);
And the code can help you avoid injection attacks by escaping literal values:
assertEquals(
"""
<script src="attack.js"></script>
""".trim(),
html(
head(
meta($-> $.charset = "utf-8")
),
body(
p("")
)
).formatted()
);
How does it work?
There’s only one “trick” here that’s particularly useful for DSLs. Using the Parameter Objects pattern from my lambda type references post.
The lambdas used for specifying the tag attributes are “aware” of their own types. And capable of instantiating the configuration they specify.
When we call
meta($ -> $.charset="utf-8")
We make a call to
default Meta meta(Parameters params, Tag... children) { … }
The lambda specifying the attribute config is structurally equivalent to the Parameters<Meta> type. This provides a get() function that instantiates an instance of Meta, and then passes the new instance to the lambda function to apply the config.
public interface Parameters extends NewableConsumer {
default T get() {
T t = newInstance();
accept(t);
return t;
}
}
Under the hood the newInstance() method uses reflection to examine the SerializedLambda contents and find the type parameter (in this case “Meta”) before instantiating it.
You can follow the code or see the previous post which explains it in a bit more detail.
Add Mixins
It’s helpful to use interfaces as mixins to avoid having to have one enormous class with all the builder definitions.
public interface HtmlDsl extends
Html.Dsl,
Head.Dsl,
Title.Dsl,
Meta.Dsl,
Link.Dsl,
Script.Dsl,
Body.Dsl,
Div.Dsl,
Span.Dsl,
A.Dsl,
P.Dsl,
Img.Dsl {}
Each tag definition then contains its own builder methods. We compose them together into a single HtmlDsl interface for convenience. This saves having to import hundreds of different methods. By implementing the Dsl interface a consumer gets access to all the builder methods.
Show me the code
It’s all on github. I’d start from the test examples. Bear in mind that it’s merely a port of the old proof of concept to a slightly different approach. I hope it helps illustrate the technique. It’s in no way attempting to be a complete implementation.
This approach can also be useful as an alternative to the builder pattern for passing a specification or configuration to a method. There’s another example on the type references article.
What else could you use this technique for?
The post Revisiting Html in Java appeared first on Benji's Blog.
Raspberry Pi で Bluetooth を使うには
openSUSE Leap 15.2 の Raspberry Pi では Bluetooth が使える状態になっていません。SLE の Raspberry Pi Quick Start に書かれている次のコマンドで初期化する必要があります。
https://documentation.suse.com/sles/15-SP1/pdf/art-rpiquick_color_en.pdf
hciattach /dev/ttyAMA1 bcm43xx 921600 hciconfig hci0 up
このコマンドを実行することでファームウェアが読み込まれ、Bluetooth が使えるようになります。
Guadec 2021 en línea se celebrará en julio
Como fue lo habitual durante el 2020 y lo sigue siendo a lo largo de este año, el gran evento comunitario del entorno de trabajo Gnome no se va a celebrar físicamente. De esta forma, la Comunidad Gnome acaba de anunciar que Guadec 2021 se celebrará en línea en julio. De esta forma evita, como ha hecho la Comunidad KDE con su Akademy, los actuales inconvenientes de la pandemia que está marcando nuestras vidas.
Guadec 2021 en línea se celebrará en julio
La rivalidad KDE-Gnome es algo que en realidad existe en la mente de los usuarios y en las bromas de los desarrolladores ya que a la hora de la verdad ambos proyectos se retroalimentan tanto en ideas como en funcionalidades.
Prueba de ello es la Linux App Summit (LAS) que se lleva celebrando desde hace unos años y la compatibilidad de aplicaciones en ambos entornos de trabajo.
No obstante en este blog la Comunidad Gnome ha tenido muy poca presencia pero no por animadversión sino por desconocimiento del que escribe estas líneas.

De esta forma, y a pesar de que el blog tiene ya casi 13 años, nunca he hablado de la GUADEC, el gran evento de la Comunidad GNOME que reúne simpatizantes, desarrolladores, diseñadores, usuarios, traductores, promotores de de este entorno de escritorio y les hace compartir una semana de charlas y talleres.
Y es por tanto hora de enmendar este error y promocionar evento ya que esta semana nos hemos enterado que Guadec 2021 en línea se celebrará en julio, concretamente del 21 al 25 de julio.
Abierto el call for papers GUADEC 2021
El tema elegido para GUADEC 2021 es «Future-Proofing FOSS». De esta forma se van a priorizar las ponencias o charlas en los que el tema se relaciona con la planificación y la construcción del futuro del software libre.
Evidentemente la variedad de temas es infinita pero si necesitas ideas para enviar tu propuesta los organizadores nos proponen las siguientes ideas:
Desarrollo de aplicaciones
Privacidad y seguridad
Creación de comunidades y equipos
Diseño de la experiencia del usuario y del desarrollador
Uso de las tecnologías de GNOME fuera del escritorio
Iniciativas para recién llegados
Planificación y gobierno de proyectos
Más información: GUADEC
Kraft Version 0.96
Ich freue mich, heute das Release Version 0.96 von Kraft herauszugeben. Die neue Version kann über die Homepage heruntergeladen werden.
Kraft 0.96 ist ein Bugfix Release, das einige kleine Fehler der Version 0.95 behebt. Insbesondere betrifft das das in 0.95 eingeführte neue PDF-Rendering mit Weasyprint.
Es gibt auch ein paar kleine neue Funktionen: Im Dokument Editor kann per Hinzufügen-Knopf nun auch eine neue Posten-Vorlage hinzugefügt werden. Außerdem werden in Folgedokumenten die im Vorgängerdokument eingetragenen Kopf- und Fußtexte kopiert, wenn die Standard-Texte für den neuen Dokumenttyp nicht gesetzt sind. Wichtig dabei: Kraft verwendet den Kopftext mit dem Namen „Standard“ als Standardtext, ebenso bei Fußtexten.
Weiterhin viel Erfolg mit Kraft!

