phone

    • chevron_right

      Profanity: New Profanity Old System

      news.movim.eu / PlanetJabber • 22 February, 2023 • 5 minutes

    Occasionally people visit our MUC asking how to run the latest profanity release on years old systems. For some distributions people maintain a backports project, so you can get it from there if available.

    Here we want to describe another methods, using containers, more specifically distrobox .

    What’s Distrobox?

    It’s basically a tool that let’s you run another distribution on your system. It uses docker/podman to create containers that are well integrated into your host system. This means all your Profanity config files etc will be in the usual place in ~/.config/profanity and ~/.local/share/profanity .

    Be aware: Profanitys configuration files might change with new versions. Usually we transform old config files into the new format. If you however use distrobox to run the latest Profanity and then want to go back to your old version it might be that your old Profanity doesn’t understand the new or changed config options.

    Setup

    You need to have docker/podman installed. And the daemon should be running. Install distrobox preferably via your distribution package manager. Alternatively you can use the infamous line curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sudo sh .

    In this guide we will use an openSUSE Tumbleweed maintainer, since it’s a rolling release distribution that will always have the latest Profanity available.

    host$ distrobox-create --name profanity-on-tw --image opensuse/tumbleweed
    Using default tag: latest
    latest: Pulling from opensuse/tumbleweed
    f7cda0ba8b2c: Pull complete
    Digest: sha256:8d4c43253942e84737681ee8307c79be4ca9ec9011b6616d40b2ef204143ab88
    Status: Downloaded newer image for opensuse/tumbleweed:latest
    docker.io/opensuse/tumbleweed:latest
    Creating 'profanity-on-tw' using image opensuse/tumbleweed	 [ OK ]
    Distrobox 'profanity-on-tw' successfully created.
    To enter, run:
    
    distrobox enter profanity-on-tw
    
    profanity-on-tw
    

    We can now enter this container and install profanity in it via:

    host$ distrobox-enter profanity-on-tw
    Container profanity-on-tw is not running.
    Starting container profanity-on-tw
    run this command to follow along:
    
     docker logs -f profanity-on-tw
    
     Starting container...                  	 [ OK ]
     Installing basic packages...           	 [ OK ]
     Setting up read-only mounts...         	 [ OK ]
     Setting up read-write mounts...        	 [ OK ]
     Setting up host's sockets integration...	 [ OK ]
     Integrating host's themes, icons, fonts...	 [ OK ]
     Setting up package manager exceptions...	 [ OK ]
     Setting up rpm exceptions...           	 [ OK ]
     Setting up sudo...                     	 [ OK ]
     Setting up groups...                   	 [ OK ]
     Integrating host's themes, icons, fonts...	 [ OK ]
     Setting up package manager exceptions...	 [ OK ]
     Setting up rpm exceptions...           	 [ OK ]
     Setting up sudo...                     	 [ OK ]
     Setting up groups...                   	 [ OK ]
     Setting up users...                    	 [ OK ]
     Executing init hooks...                	 [ OK ]
    
    Container Setup Complete!
    profanity-on-tw$ sudo zypper in profanity
    Loading repository data...
    Reading installed packages...
    Resolving package dependencies...
    
    The following 4 recommended packages were automatically selected:
      python310 python310-curses python310-dbm python310-pip
    
    The following 16 NEW packages are going to be installed:
      libgdbm6 libgdbm_compat4 libmpdec3 libotr5 libpython3_10-1_0 libsignal-protocol-c2 libstrophe0 profanity
      profanity-mini python310 python310-base python310-curses python310-dbm python310-pip python310-setuptools
      shared-python-startup
    
    16 new packages to install.
    Overall download size: 15.7 MiB. Already cached: 0 B. After the operation, additional 60.1 MiB will be used.
    Continue? [y/n/v/...? shows all options] (y): y
    Retrieving: libgdbm6-1.23-1.10.x86_64 (openSUSE-Tumbleweed-Oss)                                  (1/16),  53.0 KiB    
    Retrieving: libgdbm6-1.23-1.10.x86_64.rpm ........................................................[done (303.6 KiB/s)]
    Retrieving: libmpdec3-2.5.1-2.12.x86_64 (openSUSE-Tumbleweed-Oss)                                (2/16),  82.8 KiB    
    Retrieving: libmpdec3-2.5.1-2.12.x86_64.rpm ......................................................[done (466.2 KiB/s)]
    Retrieving: libotr5-4.1.1-4.1.x86_64 (openSUSE-Tumbleweed-Oss)                                   (3/16),  60.7 KiB    
    Retrieving: libotr5-4.1.1-4.1.x86_64.rpm .........................................................[done (624.3 KiB/s)]
    Retrieving: libsignal-protocol-c2-2.3.3-1.15.x86_64 (openSUSE-Tumbleweed-Oss)                    (4/16), 163.7 KiB    
    Retrieving: libsignal-protocol-c2-2.3.3-1.15.x86_64.rpm ..........................................[done (773.8 KiB/s)]
    Retrieving: libstrophe0-0.12.2-1.3.x86_64 (openSUSE-Tumbleweed-Oss)                              (5/16),  89.5 KiB    
    Retrieving: libstrophe0-0.12.2-1.3.x86_64.rpm ....................................................[done (548.6 KiB/s)]
    Retrieving: shared-python-startup-0.1-6.9.noarch (openSUSE-Tumbleweed-Oss)                       (6/16),  12.9 KiB    
    Retrieving: shared-python-startup-0.1-6.9.noarch.rpm ...........................................................[done]
    Retrieving: libgdbm_compat4-1.23-1.10.x86_64 (openSUSE-Tumbleweed-Oss)                           (7/16),  27.7 KiB    
    Retrieving: libgdbm_compat4-1.23-1.10.x86_64.rpm ...................................................[done (1.2 KiB/s)]
    Retrieving: libpython3_10-1_0-3.10.9-2.2.x86_64 (openSUSE-Tumbleweed-Oss)                        (8/16),   1.3 MiB    
    Retrieving: libpython3_10-1_0-3.10.9-2.2.x86_64.rpm ..............................................[done (882.1 KiB/s)]
    Retrieving: python310-base-3.10.9-2.2.x86_64 (openSUSE-Tumbleweed-Oss)                           (9/16),   9.1 MiB    
    Retrieving: python310-base-3.10.9-2.2.x86_64.rpm .................................................[done (975.5 KiB/s)]
    Retrieving: python310-setuptools-65.6.3-1.2.noarch (openSUSE-Tumbleweed-Oss)                    (10/16),   1.3 MiB    
    Retrieving: python310-setuptools-65.6.3-1.2.noarch.rpm ...........................................[done (913.8 KiB/s)]
    Retrieving: python310-pip-22.3.1-1.2.noarch (openSUSE-Tumbleweed-Oss)                           (11/16),   2.5 MiB    
    Retrieving: python310-pip-22.3.1-1.2.noarch.rpm ..................................................[done (958.3 KiB/s)]
    Retrieving: python310-3.10.9-2.2.x86_64 (openSUSE-Tumbleweed-Oss)                               (12/16), 168.5 KiB    
    Retrieving: python310-3.10.9-2.2.x86_64.rpm ......................................................[done (738.3 KiB/s)]
    Retrieving: python310-dbm-3.10.9-2.2.x86_64 (openSUSE-Tumbleweed-Oss)                           (13/16), 141.2 KiB    
    Retrieving: python310-dbm-3.10.9-2.2.x86_64.rpm ..................................................[done (806.6 KiB/s)]
    Retrieving: python310-curses-3.10.9-2.2.x86_64 (openSUSE-Tumbleweed-Oss)                        (14/16), 171.6 KiB    
    Retrieving: python310-curses-3.10.9-2.2.x86_64.rpm ...............................................[done (910.2 KiB/s)]
    Retrieving: profanity-0.13.1-1.2.x86_64 (openSUSE-Tumbleweed-Oss)                               (15/16), 104.8 KiB    
    Retrieving: profanity-0.13.1-1.2.x86_64.rpm ......................................................[done (744.9 KiB/s)]
    Retrieving: profanity-mini-0.13.1-1.2.x86_64 (openSUSE-Tumbleweed-Oss)                          (16/16), 446.4 KiB    
    Retrieving: profanity-mini-0.13.1-1.2.x86_64.rpm .................................................[done (934.5 KiB/s)]
    
    Checking for file conflicts: ...................................................................................[done]
    ( 1/16) Installing: libgdbm6-1.23-1.10.x86_64 ..................................................................[done]
    ( 2/16) Installing: libmpdec3-2.5.1-2.12.x86_64 ................................................................[done]
    ( 3/16) Installing: libotr5-4.1.1-4.1.x86_64 ...................................................................[done]
    ( 4/16) Installing: libsignal-protocol-c2-2.3.3-1.15.x86_64 ....................................................[done]
    ( 5/16) Installing: libstrophe0-0.12.2-1.3.x86_64 ..............................................................[done]
    ( 6/16) Installing: shared-python-startup-0.1-6.9.noarch .......................................................[done]
    ( 7/16) Installing: libgdbm_compat4-1.23-1.10.x86_64 ...........................................................[done]
    ( 8/16) Installing: libpython3_10-1_0-3.10.9-2.2.x86_64 ........................................................[done]
    ( 9/16) Installing: python310-base-3.10.9-2.2.x86_64 ...........................................................[done]
    (10/16) Installing: python310-setuptools-65.6.3-1.2.noarch .....................................................[done]
    (11/16) Installing: python310-pip-22.3.1-1.2.noarch ............................................................[done]
    (12/16) Installing: python310-3.10.9-2.2.x86_64 ................................................................[done]
    (13/16) Installing: python310-dbm-3.10.9-2.2.x86_64 ............................................................[done]
    (14/16) Installing: python310-curses-3.10.9-2.2.x86_64 .........................................................[done]
    (15/16) Installing: profanity-0.13.1-1.2.x86_64 ................................................................[done]
    update-alternatives: using /usr/bin/profanity-mini to provide /usr/bin/profanity (profanity) in auto mode
    (16/16) Installing: profanity-mini-0.13.1-1.2.x86_64 ...........................................................[done]
    

    Notice how the bash prompt changed from host$ to profanity-on-tw$ , which is the name we gave our container. So the call to zypper happened inside that container. You can now start profanity. And on your host system you will then see the usual files in ~/.config/profanity . Type exit to get out.

    Usage

    Each time you want to start profanity you now have to do enter the container and start it there:

    host$ distrobox-enter profanity-on-tw
    profanity-on-tw$ profanity
    

    You have however also the option to “export” profanity to your host system. Some people have a ~/bin , ~/.local/bin or another directory where they put binaries or scripts which they make available via the $PATH variable. Here we will use the ~/.local/bin folder.

    profanity-on-tw$ distrobox-export --bin /usr/bin/profanity --export-path $HOME/.local/bin
    

    Now you can call profanity even from the host system. It will be the latest version of Profanity and all its dependencies, running inside a container. With full access to your usual environment.

    Uninstall

    host$ distrobox-stop profanity-on-tw
    host$ distrobox-rm profanity-on-tw
    
    • chevron_right

      Prosodical Thoughts: Prosody 0.12.3 released

      news.movim.eu / PlanetJabber • 21 February, 2023 • 1 minute

    We are pleased to announce a new minor release from our stable branch.

    This is a bugfix release for our stable 0.12 series. Most notably, it fixes a regression for SQL users introduced in 0.12.2, and a separate long-standing compatibility issue with archive stores on certain MySQL/MariaDB versions.

    It also fixes an issue with websockets discovered by the Jitsi team, some issues with our internal HTTP client API, and we’ve improved the accuracy of ‘prosodyctl check dns’ in certain configurations.

    A summary of changes in this release:

    Fixes and improvements

    • mod_storage_sql: Don’t avoid initialization under prosodyctl (fix #1787 : mod_storage_sql changes (d580e6a57cbb) breaks prosodyctl)
    • mod_storage_sql: Fix for breaking change in certain MySQL versions ( #1639 )
    • prosodyctl check dns: Check for Direct TLS SRV records even if not configured ( #1793 )

    Minor changes

    • mod_websocket: Fire pre-session-close event (fixes #1800 : mod_websocket: cleanly-closed sessions are hibernated by mod_smacks)
    • sessionmanager: Mark session as destroyed to prevent reentry (fixes #1781 )
    • mod_admin_socket: Return error on unhandled input to prevent apparent freeze
    • configure: Fix quoting of $LUA_SUFFIX (thanks shellcheck/Zash)
    • net.http.parser: Improve handling of responses without content-length
    • net.http.parser: Fix off-by-one error in chunk parser
    • net.http.server: Add new API to get HTTP request from a connection
    • net.http.server: Fix double close of file handle in chunked mode with opportunistic writes ( #1789 )
    • util.prosodyctl.shell: Close state on exit to fix saving shell history
    • mod_invites: Prefer landing page over xmpp URI in shell command
    • mod_muc_mam: Add mam#extended form fields #1796 (Thanks Rain)
    • mod_muc_mam: Copy “include total” behavior from mod_mam
    • util.startup: Close state on exit to ensure GC finalizers are called

    Download

    As usual, download instructions for many platforms can be found on our download page

    If you have any questions, comments or other issues with this release, let us know!

    • wifi_tethering open_in_new

      This post is public

      blog.prosody.im /prosody-0.12.3-released/

    • chevron_right

      JMP: Newsletter: JMP is 6! Leaving beta this year! And FOSSY SLIGHTLY SMILING FACE

      news.movim.eu / PlanetJabber • 15 February, 2023 • 4 minutes

    Hi everyone!

    Welcome to the latest edition of your pseudo-monthly JMP update!

    In case it’s been a while since you checked out JMP, here’s a refresher: JMP lets you send and receive text and picture messages (and calls) through a real phone number right from your computer, tablet, phone, or anything else that has a Jabber client.  Among other things, JMP has these features: Your phone number on every device; Multiple phone numbers, one app; Free as in Freedom; Share one number with multiple people.

    JMP is 6 years old today!  When we launched in 2017 we had no idea exactly how far we’d go, or that we’d be making one of the most popular chat clients on F-Droid (that is Cheogram Android, which is based on Conversations).  Last year we called JMP “phone-feature-complete” and since then we’ve made all of JMP’s features even easier to use, shepherding big improvements to various Jabber clients, including Movim and Dino, while continuing to provide first-class telephony and messaging features in our flagship mobile app: Cheogram Android.

    With so many of the edges now smoothed, and a new onboarding flow almost ready to go, it’s now time to announce: JMP will be leaving beta this year!

    What does that mean?  Primarily this is our vote of confidence (as the JMP and Cheogram team) that JMP, and apps we develop such as Cheogram Android, are ready for widespread use.  While of course there will still be improvements to make, we believe it will be able to be recommended to your friends and family (especiall Android users) without reservation.

    Naturally there are a couple things to do yet to make that happen, and one of them is to put Cheogram Android in the Play Store at last.  This will be a paid (but still free-as-in-freedom) app that will include one month of JMP service.  Of course, you will still be able to get Cheogram Android from all the other places you can already get it (such as F-Droid and our own repos/APKs).

    The other main thing is to set a final post-beta monthly price for JMP.  And, while it won’t take effect until we launch later this year, we are able to now officially announce it: US$4.99/month, with incidental pricing remaining the same (i.e. extra/international minutes will remain what they are now).  Note that there will be discounts for additional JMP numbers linked to your primary JMP number, and also (before JMP leaves beta) a chance to lock in the existing pricing for a period of time.  Having never changed the price since we started JMP 6 years ago, and given the inflation and our own staffing costs since then, we feel the new price will allow JMP to remain both sustainable, and able to face new challenges and exciting opportunities going forward (like the EU’s DMA, for one).  We want to make JMP the best phone number service, and Cheogram the best gateway to everything in the world!

    Speaking of Cheogram, a JMP newsletter these days wouldn’t be complete without mention of new Cheogram Android features ( 2.12.1-2 released in APK form and Cheogram F-Droid repo today!):

    • it will now offer to setup Dialer integration automatically when available
    • the Call Logs (cdrs) command replaces the usage command (giving you more info)
    • the new onboarding flow is improved even more
    • admins of a Snikket instance can create a new Jabber ID and JMP number all inside the app now ( see the video demo )
    • new theme: any colour you want! (requires Android 11 or higher)

    Note that the Call Logs (cdrs) command will roll out to everyone in about a week.  If you’d like to try it before then, please send a private inquiry to JMP support and we’ll activate it for you.

    Lastly, some of you may be interested to know that the JMP/Cheogram team are going to be venturing out to a conference for the first time since March 2020!  In particular, most of the JMP/Cheogram team will be attending FOSSY this year, in Portland, Oregon, USA this July 13-16.  We’ll be announcing specifics of our involvement (whether we have a booth, talks, etc.) closer to the dates.  In the meantime, just know we’ll be there, and would love to chat with any JMP/Cheogram users, prospective customers, or otherwise!

    With that, we’ll cap off our 6 years. :)  And what an exciting 6 years it’s been!  With the big launch this year, you can bet on many more to come!

    To learn what’s happening with JMP between newsletters, here are some ways you can find out:

    Thanks for reading and have a wonderful rest of your week!

    • wifi_tethering open_in_new

      This post is public

      blog.jmp.chat /b/february-newsletter-2023

    • chevron_right

      Isode: Cobalt 1.3 Release Features

      news.movim.eu / PlanetJabber • 9 February, 2023 • 2 minutes

    Cobalt 1.3 depends on M-Vault 19.0 or subsequent versions

    M-Vault Management Supporties

    • M-Vault Bootstrap.   Enables operation in conjunction with M-Vault 19.0 to support headless bootstrap.
    • Managing users in M-Vault groups, such as Directory Server Administrators  and Messaging Configuration Read/Write.  This enables Cobalt to control user and operator rights to access M-Vault.
    • AD/LDAP passthrough support
      • Allow users (per domain) to support mandatory or partial passthrough
      • Set and validate passthrough entry for user
      • Identify users in passthrough server that might be added to domain

    Messaging Management

    • Profile Editor for supporting and managing M-Switch Profiler.
      • SIC Coverage UI. Provide full list of SICS, showing which addresses each one goes to.   This enables operator to ensure that all SICs are sensibly handled.
    • File Transfer By Email capability is now managed by Cobalt, replacing capability previously in MConsole.
    • For Organizations and Military DLs enable control manage capability functions:
      • Max Message Size
      • Max Line Length (for ACP 127 destinations)
      • Charset Restrictions (for ACP 127 destinations)
      • Allows/block attachments
    • Option to show for a user which DLs the user is in, and give easy addition to other DLs.  This facilitates managing DL membership.

    New Views

    • Non-Human Users (Special Users).  Need to support accounts with passwords that are not humans.   For XMPP, Email or both.
    • View for end users, rather than administrators.  User can:
      • Change password.
      • See all of own entry and modify  attributes.   The list of modifiable attributes can be configured.
      • See references to entry and email list membership.
    • User Groups, to enable management of directory groups (Distinguished Names).

    Cobalt Access Control

    • New Cobalt roles, that can enable selective control of which users can access directory admin controls, and which users can set OAUTH rights and can add OAUTH Clients.
    • Restrict Password set/change rights, so that only selected Cobalt administrators can do this.

    Security Enhancements

    • When deleting a user, remove the password.   This will make it safe for applications searching whole DIT as you can’t authenticate with a deleted user’s account.
    • Security Clearance can be selected for any role or user, based on a configured catalogue.  This supports key M-Switch and Harrier feature to check clearances.

    Miscellaneous

    • When assigning a new email, search entire DIT for conflicts, not just Cobalt area.   This  helps SASL resilience
    • Can add Photos to Routed UAs and Organizations.
    • Check References on Delete. Cobalt has a “References” button on user/role form that displays all references of a user/role.  On deleting, references are deleted as well.
    • Tool to check references to users in AD, so that when users in AD are deleted, dangling references can be picked up.
    • Remove default domain concept
    • On deletion of domain in Cobalt, give option to delete all the domain data
    • Option to end all  cobalt logged in sessions of an operator, to allow an operator to logout from all browsers with a single action
    • There is also an option for an operator with appropriate rights  to end sessions of another Cobalt operator.
    • wifi_tethering open_in_new

      This post is public

      www.isode.com /company/wordpress/cobalt-1-3-release-features/

    • chevron_right

      Erlang Solutions: Elixir, 7 steps to start your journey

      news.movim.eu / PlanetJabber • 9 February, 2023 • 3 minutes

    Read this post in Spanish .

    Let’s talk about Elixir!

    Elixir is a functional programming language created by José Valim to build concurrent and scalable systems. It is defined as:

    “a dynamic, functional language for building scalable and maintainable applications”.

    https://elixir-lang.org/

    Its first version was released in 2012. Since then, new features and improvements have been added until its current version . It is a relatively young programming language that has established itself quickly due to its nice syntax and short learning curve. Also, it is supported by a technology that has been working since the eighties in production systems, the BEAM.

    Elixir runs on the BEAM, Erlang’s virtual machine.

    In a later blog post, we’ll go into more detail about the virtual machine. For now, I want to mention a few features that make the BEAM a solid technology and a fantastic choice for system development. For example:

    • It simultaneously supports millions of users and transactions.
    • It has a mechanism to detect failures and define strategies that allow a system to recover from them.
    • It has all the necessary elements to develop a system capable of operating without interruptions or, failing that, with the minimum of them.
    • It allows system updates in real-time without stopping and in an “invisible” way for end users.

    Elixir inherits all these properties from BEAM. Adding to it that-the language has a very nice syntax, it is easy to learn, there are many resources (blogs, podcasts, etc), and the community is very friendly. So creating a project from scratch to start practicing requires very little time and effort.

    I was introduced to Elixir by chance in 2018. The project I learned it with made me suffer a bit because it was a different experience than what I was used to until then. But once I got into the rhythm, it became pretty enjoyable. Sometime last year, I wondered what would have happened if I hadn’t discovered it by coincidence.

    Would Elixir have caught my attention on its own? Is it a recommended option for someone learning to program? Do you require previous experience?

    So I posted a tweet asking other developers:

    Here are some answers :

    It is not easy to reach a definitive conclusion since choosing this language, as the first option will depend on the tastes and experiences of the individual. Some of its advantages are mentioned in the tweet replies, which motivated me to write this series.

    Without further ado, I welcome you to the series Elixir, 7 steps to start your journey.

    Throughout seven chapters, we’ll talk a bit about history, relevant technical aspects and delve into why Elixir has quickly gained popularity. I will also tell you a little about my experience in the projects in which I have participated.

    What topics will it cover?

    1. Erlang’s virtual machine, the BEAM
    2. Understanding processes and concurrency
    3. Libraries and frameworks
    4. Testing and debugging
    5. The Elixir Community
    6. Functional Programming vs. Object-Oriented Programming
    7. My first project with Elixir!

    Who is this series for?

    • People with no experience in any programming language looking for an option to explore.
    • People with previous experience in other programming languages who want to experiment with Elixir.

    Difficulty level: Beginner

    Elixir official documentation:

    In each chapter, I’ll share resources to dig deeper into the topics. You can find me on Twitter as @loreniuxmr to clarify questions or continue the conversation. You can also use the hashtags #MyElixirStatus and #Elixirlang  to find other Elixir developers.

    The next post will be about Erlang’s virtual machine, the BEAM, and why it is so relevant when it comes to Elixir. See you!

    The post Elixir, 7 steps to start your journey appeared first on Erlang Solutions .

    • chevron_right

      Erlang Solutions: Elixir, 7 pasos para iniciar tu viaje

      news.movim.eu / PlanetJabber • 9 February, 2023 • 3 minutes

    ¡Hablemos de Elixir!

    Elixir es un lenguaje de programación funcional creado por José Valim para construi sistemas concurrentes y escalables.

    “a dynamic, functional language for building scalable and maintainable applications”.

    https://elixir-lang.org/

    Su primera versión fue liberada en 2012. Desde entonces, se le han agregado nuevas funcionalidades y mejoras hasta llegar a su versión actual . Se trata de un lenguaje de programación relativamente joven, pero bien establecido y que ha ganado aceptación rápidamente gracias su sintaxis agradable y una curva de aprendizaje corta. Elixir está respaldado por una tecnología que ha estado en funcionamiento en sistemas reales desde los años ochenta, la BEAM.

    Elixir corre sobre la máquina virtual de Erlang, la BEAM.

    Más adelante entraremos en más detalles y hablaremos de la máquina virtual. Por ahora me gustaría mencionar algunas características que hacen de la BEAM una tecnología sólida y una gran opción para el desarrollo de sistemas. Por ejemplo:

    • Soporta simultáneamente millones de usuarios y transacciones .
    • Tiene un mecanismo para detectar fallos y te permite definir estrategias para recuperarse de ellos.
    • Te brinda todos los elementos necesarios para desarrollar sistemas capaces de operar sin interrupciones o, en su defecto, con el mínimo de ellas.
    • Permite hacer actualizaciones de un sistema en tiempo real sin detenerlo, y de manera “invisible” para los usuarios finales.

    Elixir hereda todas estas propiedades de la BEAM. Y a eso le sumamos que el lenguaje tiene una sintaxis bastante agradable, es fácil de aprender, existen muchos recursos (blogs, podcasts, etc) y la comunidad es increíble. Así que crear un proyecto desde cero para practicar y aprender require de muy poco tiempo y esfuerzo.

    Conocí Elixir por casualidad en 2018. El proyecto con el que lo aprendí me hizo sufrir un poco, porque se trataba de un lenguaje totalmente diferente a los que había conocido hasta ese entonces (orientados a objetos) pero mi experiencia una vez que descubrí todo lo que había se volvió muy disfrutable. En algún momento del año pasado me pregunté qué hubiera pasado de no haberlo descubierto por coincidencia.

    ¿Me hubiera llamado la atención en algún momento? ¿Es una opción recomendada para alguien que está aprendiendo programación? ¿Requiere experiencia previa?

    Así que le pregunté en Twitter a otros desarrolladores :

    A continuación algunas respuestas:

    Es difícil llegar a una conclusión definitiva, pues escoger este lenguaje como primera opción o no dependerá de los gustos y la experiencia de cada quien. Algunas de las respuestas hablan acerca de las ventajas de este lenguaje de programación y fueron la razón que me motivo a escribir esta serie.

    Así que sin más que decir, bienvenido a Elixir, 7 pasos para iniciar tu viaje.

    A lo largo de siete capítulos hablaremos un poco acerca de su historia, aspectos técnicos relevantes y por qué ha ganado popularidad rápidamente. También te contaré cómo ha sido mi experiencia en los proyectos en los que he participado.

    ¿Qué temas cubrirá?

    1. La máquina virtual de Erlang, la BEAM
    2. Entendiendo procesos y concurrencia
    3. Bibliotecas y frameworks
    4. Pruebas y debugging
    5. La comunidad de Elixir
    6. Programación funcional vs Programación orientada a objetos
    7. ¡Mi primer proyecto con Elixir!

    ¿A quién está dirigida esta serie?

    • Personas sin experiencia en ningún lenguaje de programación que están en busca de su primera opción para explorar.
    • Personas con experiencia previa en otros lenguajes de programación que quieran experimentar con Elixir.

    Nivel de dificultad: Principantes.

    Documentación oficial de Elixir:

    En cada capítulo te compartiré recursos para profundizar los temas. Puedes encontrarme en Twitter como @loreniuxmr para aclarar cualquier duda o seguir con la conversación. Y también puedes utilizar los siguientes hashtags para conectar con otros desarrolladores: #MyElixirStatus y #Elixirlang

    En la próxima nota hablaremos de la máquina virtual de Erlang, la BEAM y por qué es tan relevante cuando hablamos de Elixir. ¡Nos vemos!

    The post Elixir, 7 pasos para iniciar tu viaje appeared first on Erlang Solutions .

    • chevron_right

      Dino: Dino 0.4 Release

      news.movim.eu / PlanetJabber • 7 February, 2023 • 2 minutes

    Dino is a secure and open-source messaging application. It uses the XMPP (Jabber) protocol for decentralized communication. We aim to provide an intuitive and enjoyable user interface.

    The 0.4 release adds support for message reactions and replies. We also switched from GTK3 to GTK4 and make use of libadwaita now.

    Reactions and Replies

    reaction.png

    Reactions give you a quick and light-weight way to respond to a message with an emoji. They can be used to express agreement or disagreement 👍️👎️, for voting, to express a feeling 🥳🤯, and much more 🦕. You can react with any emoji you want and with as many as you want!

    The new Dino release also adds another way for you to interact with messages: Replies. The original message is displayed alongside the reply, and you can click on it to jump up to the original message.

    message_menu.png

    You can add a reaction or reply to a message via the message menu. To access the message menu, hover the message or tap it on touch-screens.

    Screenshot of a reply

    Reactions and replies are always possible in direct conversations. In group chats and channels, the admin decides whether to support the features.

    GTK4 and libadwaita

    Dino now uses GTK4 instead of GTK3 to display its user interface. To the outside there are no big UI changes. However, we can now make use of new or improved GTK features.

    Furthermore, we started using libadwaita, which contains specialized Widgets and provides tools to build mobile-friendly UIs. We already adjusted Dino’s main view for usage on mobile devices.

    Ilulissat

    Glaciers are fascinating landscapes of flowing ice. We named this Dino release “Ilulissat” after a glacier in Greenland to help spread information on the effects of global warming on glaciers.

    Glaciers are created over a span of centuries from fallen snow that compacts and transforms into glacial ice. When the ice reaches a certain thickness, it starts to behave like a liquid. Thus, glaciers are in constant movement, driven downhill by gravity under their own weight.

    Satellite view of the Ilulissat glacier and icefjord

    Satellite view of the Ilulissat glacier and icefjord

    Very large glaciers, also known as ice sheets, exist on Antarctica and Greenland. Greenland’s ice sheet covers about 80% of the island and has an average thickness of 1,5 km.

    The Greenland Ice Sheet, like all glaciers, is constantly in motion. It accumulates ice in the interior of the island and flows outwards, eventually reaching the ocean through so-called outlet glaciers. One such outlet glacier is the Ilulissat glacier in West Greenland, the fastest draining outlet of the Greenland Ice Sheet with a flow speed of over 20 meters per day.

    Unfortunately, the Greenland Ice Sheet has been shrinking for past 26 years [ 1 ]. Rising water and air temperatures are causing outlet glaciers to melt at an accelerating pace, draining the ice sheet more quickly and resulting in increased sea levels [ 2 ]. Between 1992 and 2020, meltwater from the Greenland Ice Sheet alone increased global sea levels by over 1,3 cm, where every centimeter of sea level rise is estimated to expose 6 Million people to coastal flooding [ 3 ].

    • wifi_tethering open_in_new

      This post is public

      dino.im /blog/2023/02/dino-0.4-release/

    • chevron_right

      Isode: Icon-5066 3.0 – New Capabilities

      news.movim.eu / PlanetJabber • 2 February, 2023 • 2 minutes

    We are thrilled to announce the latest update to our STANAG 5066 server, Icon-5066. With this new release, we’ve incorporated a host of exciting features and enhancements, designed to not only add new functionality to your deployment but also increase the performance of your HF Radio Network.

    The below is a list of the changes, and updates that can be found within Icon-5066 v3.0.

    ALE Management

    This major new feature enables management of ALE configuration independent of ALE implementation and allows easy sharing of configuration between nodes.  This capability is supported for modems where Isode provides ALE support.  Key features:

    • Web configuration of HF Network for each Icon-5066 node.
    • Configuration of Node ALE addressing, with support for 2G, 3G and 4G.
    • Support for fixed frequency (not using ALE for a network)
    • Configuration of HF Frequency list with options for narrowband and wideband
    • Configuration of schedules for used with ALE or fixed frequency.   This enables the frequencies used to be changed at configured times so that appropriate frequencies are used for an ALE network throughout the 24 hour cycle.
    • Import/Export of configuration, to enable easy sharing of configuration between nodes.   Model is that you configure ALE setup on one node and the transfer to other nodes.

    Security

    Two important security enhancements are included:

    1. Use of OAuth to control which operators can access Icon-5066.
    2. Support of TLS which includes:
      1. HTTPS Web Access
      2. TLS Support for GCXP to support Modem Proxy (crypto bypass) across a Red/Black boundary
      3. Web configuration of PKI setup of TLS

    STANAG 5066 Ed4 Compliance

    Icon-5066 is compliant to STANAG 5066 Ed4.   An overview of Ed4 is here .   Detailed Icon-5066 compliance is specified here .

    Most of these capabilities were in the previous release, but described as STANAG 5066 proposed extensions.   Interoperability has been tested with another Ed4 implementation.

    SNR Monitor

    A new option is provided to configure Icon-5066 as a modem monitor with a simple TCP monitoring protocol.  This is a general purpose capability, but is specifically targeted to support the ACP 127 FAB (Frequency Assignment Broadcast) capability in M-Switch to enable the FAB broadcast to report on measured link quality using a modem at a remote location.

    New Modem/ALE Support

    The following ALE capabilities are added:

    • 3G ALE support for RapidM RM8 and RM10.
    • 4G ALE support for RapidM RM10

    A new “Raw TCP” data option, which sends and receives data over simple TCP connection.   This generic capability can be used to exchange data with RapidM RM10 modem.

    Management

    Support for independent control of multiple STANAG 5066 nodes, so that on a system with multiple nodes nodes can be independently enabled and disabled by the Icon-5066 operator.

    Red/Black Driver

    A driver is provided for Isode’s Red/Black product to monitor Icon-5066.   Like the Red/Black driver for Isode supported Modems, this driver is distributed with Icon-5066, but will be picked up by a collocated Red/Black server.   It enables a Red/Black operator to enable/disable an Icon-5066 node and to monitor key parameters.

    Product Activation

    Icon-5066 servers are now controlled by Isode Product Activation.  This control includes:

    • Optional enabling of TLS.  This is helpful for export.
    • Control of the number of nodes available

    • wifi_tethering open_in_new

      This post is public

      www.isode.com /company/wordpress/icon-5066-3-0-new-capabilities/

    • chevron_right

      JMP: Threads, Thumbnails, XMR, ETH

      news.movim.eu / PlanetJabber • 23 January, 2023 • 2 minutes

    Hi everyone!

    Welcome to the latest edition of your pseudo-monthly JMP update!

    In case it’s been a while since you checked out JMP, here’s a refresher: JMP lets you send and receive text and picture messages (and calls) through a real phone number right from your computer, tablet, phone, or anything else that has a Jabber client.  Among other things, JMP has these features: Your phone number on every device; Multiple phone numbers, one app; Free as in Freedom; Share one number with multiple people.

    This month we released Cheogram Android 2.12.1-1 which includes several new features.  One of the big ones is an interface for having threaded conversations with other Jabber users ( watch the demo video ).  This feature will also make it easier to reply to the right message if you use the email gateway .  The app has grown support for more media features, including an ability to show an image right away if you already have it, without waiting for a download, and blurhash based placeholders for images from MMS you have not yet downloaded.

    There is also a new user experience when receiving group texts that will actually show the sender’s name (and even avatar, if you have one set for them locally) the same way as any other group chat in the app.  This is made possible by a new draft protocol extension we adopted for part of the purpose.

    This version is based on the latest 2.12.1 from upstream, which among other things has added the ability to function as a Unified Push distributor , so if you use any compatible app you may want to check that out.

    For the JMP service, this month we shipped the ability to make top-up payments using XMR or ETH directly from the top up command.  This simplifies the flow for users of those currencies, and we hope you will find it useful.  Integrating this support into registration is also coming, but not ready quite yet.

    If you are planning to be at FOSDEM 2023 , be sure to check out the realtime lounge in with the other stands.  Unfortunately no one from JMP will be there this year, but people from Snikket and other projects around the ecosystem will be present.

    To learn what’s happening with JMP between newsletters, here are some ways you can find out:

    Thanks for reading and have a wonderful rest of your week!

    • wifi_tethering open_in_new

      This post is public

      blog.jmp.chat /b/january-newsletter-2023