Feeds
roose.digital: This is how you redirect all visitors to the HTTPS version of your Drupal website with or without WWW
Lullabot: The Easy Guide to Resolving composer.lock Conflicts
Resolving merge conflicts is a great advanced part of Composer’s documentation, but we’ve found that it leaves many readers more confused than confident. If there is a composer.lock conflict, all you get is this error message:
Gunnar Wolf: Script for weather reporting in Waybar
While I was living in Argentina, we (my family) found ourselves checking for weather forecasts almost constantly — weather there can be quite unexpected, much more so that here in Mexico. So it took me a bit of tinkering to come up with a couple of simple scripts to show the weather forecast as part of my Waybar setup. I haven’t cared to share with anybody, as I believe them to be quite trivial and quite dirty.
But today, Víctor was asking for some slightly-related things, so here I go. Please do remember I warned: Dirty.
I am using OpenWeather’s open API. I had to register to get an APPID, and it allows me for up to 1,000 API calls per day, more than plenty for my uses, even if I am logged in at my desktops at three different computers (not an uncommon situation). Having that, I set up a file named /etc/get_weather/, that currently reads:
# Home, Mexico City LAT=19.3364 LONG=-99.1819 # # Home, Paraná, Argentina # LAT=-31.7208 # LONG=-60.5317 # # PKNU, Busan, South Korea # LAT=35.1339 #LONG=129.1055 APPID=SomeLongRandomStringIAmNotSharingThen, I have a simple script, /usr/local/bin/get_weather, that fetches the current weather and the forecast, and stores them as /run/weather.json and /run/forecast.json:
#!/usr/bin/bash CONF_FILE=/etc/get_weather if [ -e "$CONF_FILE" ]; then . "$CONF_FILE" else echo "Configuration file $CONF_FILE not found" exit 1 fi if [ -z "$LAT" -o -z "$LONG" -o -z "$APPID" ]; then echo "Configuration file must declare latitude (LAT), longitude (LONG) " echo "and app ID (APPID)." exit 1 fi CURRENT=/run/weather.json FORECAST=/run/forecast.json wget -q "https://api.openweathermap.org/data/2.5/weather?lat=${LAT}&lon=${LONG}&units=metric&appid=${APPID}" -O "${CURRENT}" wget -q "https://api.openweathermap.org/data/2.5/forecast?lat=${LAT}&lon=${LONG}&units=metric&appid=${APPID}" -O "${FORECAST}"This script is called by the corresponding systemd service unit, found at /etc/systemd/system/get_weather.service:
[Unit] Description=Get the current weather [Service] Type=oneshot ExecStart=/usr/local/bin/get_weatherAnd it is run every 15 minutes via the following systemd timer unit, /etc/systemd/system/get_weather.timer:
[Unit] Description=Get the current weather every 15 minutes [Timer] OnCalendar=*:00/15:00 Unit=get_weather.service [Install] WantedBy=multi-user.target(yes, it runs even if I’m not logged in, wasting some of my free API calls… but within reason)
Then, I declare a "custom/weather" module in the desired position of my ~/.config/waybar/waybar.config, and define it as:
"custom/weather": { "exec": "while true;do /home/gwolf/bin/parse_weather.rb;sleep 10; done", "return-type": "json", },This script basically morphs a generic weather JSON description into another set of JSON bits that display my weather in the way I prefer to have it displayed as:
#!/usr/bin/ruby require 'json' Sources = {:weather => '/run/weather.json', :forecast => '/run/forecast.json' } Icons = {'01d' => '🌞', # d → day '01n' => '🌃', # n → night '02d' => '🌤️', '02n' => '🌥', '03d' => '☁️', '03n' => '🌤', '04d' => '☁️', '04n' => '🌤', '09d' => '🌧️', '10n' => '🌧 ', '10d' => '🌦️', '13d' => '❄️', '50d' => '🌫️' } ret = {'text': nil, 'tooltip': nil, 'class': 'weather', 'percentage': 100} # Current weather report: Main text of the module begin weather = JSON.parse(open(Sources[:weather],'r').read) loc_name = weather['name'] icon = Icons[weather['weather'][0]['icon']] || '?' + f['weather'][0]['icon'] + f['weather'][0]['main'] temp = weather['main']['temp'] sens = weather['main']['feels_like'] hum = weather['main']['humidity'] wind_vel = weather['wind']['speed'] wind_dir = weather['wind']['deg'] portions = {} portions[:loc] = loc_name portions[:temp] = '%s 🌡%2.2f°C (%2.2f)' % [icon, temp, sens] portions[:hum] = '💧 %2d%%' % hum portions[:wind] = '🌬%2.2fm/s %d°' % [wind_vel, wind_dir] ret['text'] = [:loc, :temp, :hum, :wind].map {|p| portions[p]}.join(' ') rescue => err ret['text'] = 'Could not process weather file (%s ⇒ %s: %s)' % [Sources[:weather], err.class, err.to_s] end # Weather prevision for the following hours/days begin cast = [] forecast = JSON.parse(open(Sources[:forecast], 'r').read) min = '' max = '' day=Time.now.strftime('%Y.%m.%d') by_day = {} forecast['list'].each_with_index do |f,i| by_day[day] ||= [] time = Time.at(f['dt']) time_lbl = '%02d:%02d' % [time.hour, time.min] icon = Icons[f['weather'][0]['icon']] || '?' + f['weather'][0]['icon'] + f['weather'][0]['main'] by_day[day] << f['main']['temp'] if time.hour == 0 min = '%2.2f' % by_day[day].min max = '%2.2f' % by_day[day].max cast << ' ↑ min: <b>%s°C</b> max: <b>%s°C</b>' % [min, max] day = time.strftime('%Y.%m.%d') cast << ' ┍━━━━━┫ <b>%04d.%02d.%02d</b> ┠━━━━━┑' % [time.year, time.month, time.day] end cast << '%s | %2.2f°C | 🌢%2d%% | %s %s' % [time_lbl, f['main']['temp'], f['main']['humidity'], icon, f['weather'][0]['description'] ] end cast << ' ↑ min: <b>%s</b>°C max: <b>%s°C</b>' % [min, max] ret['tooltip'] = cast.join("\n") rescue => err ret['tooltip'] = 'Could not process forecast file (%s ⇒ %s)' % [Sources[:forecast], err.class, err.to_s] end # Print out the result for Waybar to process puts ret.to_jsonThe end result? Nothing too stunning, but definitively something I find useful and even nicely laid out:
Do note that it seems OpenWeather will return the name of the closest available meteorology station with (most?) recent data — for my home, I often get Ciudad Universitaria, but sometimes Coyoacán or even San Ángel Inn.
Tag1 Consulting: Migrating Your Data from D7 to D10: The migration process pipeline
Series Overview & ToC | Previous Article | Next Article - coming July 24th --- Our last article explored the syntax and structure of migration files. Today, we are diving deeper into the most important part of a migration: the process pipeline. This determines how source data will be processed and transformed to match the expected destination structure. We will learn how to configure and chain process plugins, how to set subfields and deltas for multi-value fields, and to work with source constants and pseudo-fields. Let’s get started. ## From source to destination The process section in a migration is responsible for transforming data as extracted from the source into a format that the destination expects. The collection of all those data transformations is known as the migration process pipeline. The Migrate API is a generic ETL framework. This means the source data can come from different types of sources like a database table; a CSV, JSON, or XML file; a remote API using JSON:API or GraphQL; or something else. The destination can be as diverse including databases, text files, and remote APIs. Because the series focuses on migrating from Drupal 7 to 10, most of our discussion will revolve...
Read more mauricio Wed, 07/17/2024 - 08:23Real Python: Python Protocols: Leveraging Structural Subtyping
In Python, a protocol specifies the methods and attributes that a class must implement to be considered of a given type. Protocols are important in Python’s type hint system, which allows for static type checking through external tools, such as mypy, Pyright, and Pyre.
Before there were protocols, these tools could only check for nominal subtyping based on inheritance. There was no way to check for structural subtyping, which relies on the internal structure of classes. This limitation affected Python’s duck typing system, which allows you to use objects without considering their nominal types. Protocols overcome this limitation, making static duck typing possible.
In this tutorial, you’ll:
- Gain clarity around the use of the term protocol in Python
- Learn how type hints facilitate static type checking
- Learn how protocols allow static duck typing
- Create custom protocols with the Protocol class
- Understand the differences between protocols and abstract base classes
To get the most out of this tutorial, you’ll need to know the basics of object-oriented programming in Python, including concepts such as classes and inheritance. You should also know about type checking and duck typing in Python.
Get Your Code: Click here to download the free sample code that shows you how to leverage structural subtyping with Python protocols
The Meaning of “Protocol” in PythonDuring Python’s evolution, the term protocol became overloaded with two subtly different meanings. The first meaning refers to internal protocols, such as the iterator, context manager, and descriptor protocols.
These protocols are widely understood in the community and consist of special methods that make up a given protocol. For example, the .__iter__() and .__next__() methods define the iterator protocol.
Python 3.8 introduced a second, slightly different type of protocol. These protocols specify the methods and attributes that a class must implement to be considered of a given type. So, these protocols also have to do with a class’s internal structure.
With this kind of protocol, you can define interchangeable classes as long as they share a common internal structure. This feature allows you to enforce a relationship between types or classes without the burden of inheritance. This relationship is known as structural subtyping or static duck typing.
In this tutorial, you’ll focus on this second meaning of the term protocol. First, you’ll have a look at how Python manages types.
Dynamic and Static Typing in PythonPython is a dynamically typed language, which means that the Python interpreter checks an object’s type when the code runs. It also means that while a variable can only reference one object at a time, the type of that object can change during the variable’s lifetime.
For example, you can have a variable that starts as a string and changes into an integer number:
Python >>> value = "One hundred" >>> value 'One hundred' >>> value = 100 >>> value 100 Copied!In this example, you have a variable that starts as a string. Later in your code, you change the variable’s value to an integer.
Because of its dynamic nature, Python has embraced a flexible typing system that’s known as duck typing.
Duck TypingDuck typing is a type system in which an object is considered compatible with a given type if it has all the methods and attributes that the type requires. This typing system supports the ability to use objects of independent and decoupled classes in a specific context as long as they adhere to some common interface.
Note: To dive deeper into duck typing, check out the Duck Typing in Python: Writing Flexible and Decoupled Code tutorial.
As an example of duck typing, you can consider built-in container data types, such as lists, tuples, strings, dictionaries, and sets. All of these data types support iteration:
Python >>> numbers = [1, 2, 3] >>> person = ("Jane", 25, "Python Dev") >>> letters = "abc" >>> ordinals = {"one": "first", "two": "second", "three": "third"} >>> even_digits = {2, 4, 6, 8} >>> containers = [numbers, person, letters, ordinals, even_digits] >>> for container in containers: ... for element in container: ... print(element, end=" ") ... print() ... 1 2 3 Jane 25 Python Dev a b c one two three 8 2 4 6 Copied!In this code snippet, you define a few variables using different built-in types. Then, you start a for loop over the collections and iterate over each of them to print their elements to the screen. Even though the built-in types are significantly different from one another, they all support iteration.
The duck typing system allows you to create code that can work with different objects, provided that they share a common interface. This system allows you to set relationships between classes that don’t rely on inheritance, which produces flexible and decoupled code.
Read the full article at https://realpython.com/python-protocol/ »[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]
Real Python: Quiz: How Do You Choose Python Function Names?
In this quiz, you’ll test your understanding of how to choose Python function names.
By working through this quiz, you’ll revisit the rules and conventions for naming Python functions and why they’re important for writing Pythonic code.
Choosing the ideal Python function names makes your code more readable and easier to maintain. Code with well-chosen names can also be less prone to bugs.
[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]
Anwesha Das: Looking back to Euro Python 2024
Over the years, when I am low, I always go to the 2014 Euro Python talk "Farewell and Welcome Home: Python in Two Genders" by Naomi. It has become the first step of my coping mechanism and the door to my safe house. Though 2024 marked my Euro Python journey in person, I had a long connection and respect for the conference. A conference that believes community matters, human values and feelings matter, and not afraid to walk the talk. And how the conference stood up to my expectations in every bit.
My Talk: Intellectual Property Law 101I had my talk on Intellectual Property Law, on the first day. After a long time, I was giving a talk on the legal topic. This talk was dedicated to the developers. So, I concentrated on only those issues which concerned the developers. Tried to stitch the concerned topics Patent, Trademarks, and Copyright together. For the smooth flow of the talk, since it becomes easier for the developers to understand and remember for all the practical purposes for future use. I was concerned if I would be able to connect with people. Later, people came to me with several related questions, starting from
-
Why should I be concerned about patents?
-
Which license would fit my project?
-
Should I be scared about any Trademarks granted to other organizations under some other jurisdiction?
So on and so forth. Though I could not finish the whole talk due to time constraints, I am happy with the overall review.
Panel: Open Source SustainabilityOn Day 1 of the main conference, we had the panel on Open Source Sustainability. This topic lies at the core of open-source ecosystem sustainability for the projects and community for the future and stability. The panel had Deb Nicholson, Armin Ronacher Çağıl Uluşahin Sönmez,Deb Nicholson, Samuel Colvin, and me and Artur Czepiel as the moderator. I was happy to represent my community&aposs side. It was a good discussion, and hopefully, we could give answers to some questions of the community in general.
Birds of Feather session: Open Source Release ManagementThis Birds of Feathers (BoF) session is intended to deal with the Release Management of various Open Source projects, irrespective of their size. The discussion includes all projects, from a community-led project to projects maintained/initiated by big enterprises, from a project maintained by one contributor to a project with several hundred contributors.
-
What methods do we follow regarding versioning, release cadence, and the process?
-
Do most of us follow manual processes or depend on automated ones?
-
What works and what does not, and how can we improve our lives?
-
What are the significant points that make the difference?
We discussed and covered the following topics: different aspects of release management of Open-Source projects, security, automation, CI usage, and documentation. We followed the Chatham House Rules during the discussion to provide the space for open, frank, and collaborative conversation.
PyLadies LunchAnd then comes my favorite part of the conference: PyLadies Lunch. It was my seventh PyLadies lunch, and I was moderating it for the fifth time. But this time, my wonderful friends [Laís] and Çağıl were by my side, holding me up when I failed. I love every time I am at a PyLadies lunch. This is where I get my strength, energy, and love.
WorkshopI attended two workshops organized by Anezka Muller , Mia Bajić and all amazing PyLadies organizers
-
Self-defense workshop where the moderators helped us navigate challenging situations we face in life, safeguard ourselves from them, and overcome them.
-
I AM Remarkable workshop, where we learned to tell people about our successes.
I always take the chance to meet the Ansible community members face-to-face. Euro Python gave me another opportunity to do that. I learned about different user stories that we do not get to hear from our work corners, and I learned about these unique problems and their solutions in Ansible.
Fun fact : Maarten gave a review after knowing I am Anwesha from the Ansible project. He said, &aposCan you Ansible people slow down in releasing new versions of Ansible? Every time we get used to it, we have a new version.&apos
The proudest moment for me personally was when I acknowledged my mental health issues and later when people came to me saying how they relate to me and how they felt empowered when I mentioned this.
PyLadies network at Red HatA network of PyLadies within Red Hat has been my dream since I joined Red Hat. She also agreed when I shared this with Karolina at last year&aposs DevConf. And finally, we initiated on day 2 of the conference. We are so excited for the future to come.
Meeting friendsConference means friends. It was so great to meet so many friends after such a long time Tylor, Nicholas, Naomi, Honza, Carol, Mike, Artur, Nikita, Valerio and many new ones Jannis Joana,[Chirstian], Martina Tereza , Maria, Alyona, Mia, Naa , Bojanand Jodie. A special note of love to Jodie, you to hold my hand and take me out of the dark.
The best is saved for the last. Euro Python 2024 made 3 of my dreams come true.
-
Gender Neutral Washrooms
-
Sanitary products in restrooms (I remember carrying sanitary napkins in my bag pack in PyCon India and telling girls if they needed it, it was available in the PyLadies booth).
-
Neo-diversity bag (which saved me at the conference; thank you, Karolina, for this)
I cannot wait for the next Euro Python; see you all at Euro Python 2025.
PS: Thanks to Lias, I will always have a small piece of Euro Python 2024 with me. I know I am loved and cared for.
Python Software Foundation: Announcing the 2024 PSF Board Election & Proposed Bylaw Change Results!
The 2024 election for the PSF Board and proposed Bylaws changes created an opportunity for conversations about the PSF's work to serve the global Python community. We appreciate community members' perspectives, passion, and engagement in the election process this year.
We want to send a big thanks to everyone who ran and was willing to serve on the PSF Board. Even if you were not elected, we appreciate all the time and effort you put into thinking about how to improve the PSF and represent the parts of the community you participate in. We hope that you will continue to think about these issues, share your ideas, and join a PSF Work Group if you feel called to do so.
Board Members ElectCongratulations to our three new Board members who have been elected!
- Tania Allard
- KwonHan Bae
- Cristián Maureira-Fredes
We’ll be in touch with all the elected candidates shortly to schedule onboarding. Newly elected PSF Board members are provided orientation for their service and will be joining the upcoming board meeting.
PSF Bylaw ChangesAll three of the proposed PSF Bylaw changes are approved:
- Merging Contributing and Managing member classes
- Simplifying the voter affirmation process by treating past voting activity as intent to continue voting
- Allow for removal of Fellows by a Board vote in response to Code of Conduct violations, removing the need for a vote of the membership
We appreciate the high level of engagement on the proposed Bylaw changes, and the range of perspectives and points that were raised. We hope that our efforts towards increased transparency, such as the Office Hour session, and our responses in the FAQ helped to continue to build trust with the community. Our goal with these changes continues to be:
- Making it simpler to qualify as a Member for Python-related volunteer work
- Making it easier to vote
- Allowing the Board more options to keep our membership safe and enforce the Code of Conduct
This announcement serves as notice that the Bylaws changes have been approved by the membership, and will automatically go into effect 15 days from now, on Thursday, August 1st, 2024.
Thank you!We’d like to take this opportunity to thank our outgoing board member, Débora Azevedo, for her outstanding service. Débora served on the PSF Board through a particularly eventful time; bringing PyCon US into an age of hybrid events, responding to calls from our community for transparency, and hiring multiple new staff members to continue to improve our organization. Thank you for supporting the PSF and the Python community through so much change- you are appreciated!
Our heartfelt thanks go out to each of you who took the time to review the candidates and submit your votes. Your participation helps the PSF represent our community. We received 611 total votes, easily reaching quorum–1/3 of affirmed voting members (794). We’re especially grateful for your patience with continuing to navigate the changes to the voting process, which allows for a valid election and a more sustainable election system.
We also want to thank everyone who helped promote this year’s board election, especially Board Members Denny Perez and Georgi Ker, who took the initiative to cover this year’s election and produced informational videos for our candidates. This promotional effort was inspired by the work of Python Community News last year. We also want to highlight the PSF staff members and PSF Board members who put in tons of effort each year as we work to continually improve the PSF elections.
If you’re interested in the complete tally, make sure to check the Python Software Foundation Board of Directors Election 2024 Results page. These results will be available until 10 Sep 2024 at 10:00 AM EDT.
The PSF Election team will conduct a retrospective of this year’s election process to ensure we are improving year over year. We received valuable feedback about the process and tooling. We hope to be able to implement changes for next year to ensure a smooth and accessible election process for everyone in our community.
Finally, it might feel a little early to mention this, but we will have at least 4 seats open again next year. If you're interested in running or learning more, we encourage you to contact a current PSF Board member or two this year and ask them about their experience serving on the board.
health @ Savannah: MyGNUHealth 2.2.1 released
Dear community
I am happy to announce patchset 2.2.1 for MYGNUHealth, the GNU Health Personal Health Record.
This patchset fixes the following issues:
- MyGH crashes when clicking 'Network': https://codeberg.org/gnuhealth/mygnuhealth/issues/34
- Include icons of type gif on MANIFEST.in : https://codeberg.org/gnuhealth/mygnuhealth/issues/36
You can download MyGNUHealth source code from the official GNU Savannah (https://ftp.gnu.org/gnu/health/mygnuhealth/). You can also install MyGH from the Python Package Index (PyPI) or from your operating system distribution.
Happy hacking
Luis
Mike Gabriel: Weather Experts with Translation Skills Needed!
In Ubuntu Touch / Lomiri, Maciej Sopyło has updated Lomiri's Weather App to operate against a different weather forecast provider (Open Meteo). Additionally, the new implementation is generic and pluggable, so other weather data providers can be added-in later.
Big thanks to Maciej for working on this just in time (the previous implementation's API has recently been EOL'ed and is not available anymore to Ubuntu Touch / Lomiri users).
Lomiri Weather App - new Meteorological Terms part of the App nowWhile the old weather data provider implementation obtained all the meteorological information as already localized strings from the provider, the new implementation requires all sorts of weather conditions being translated within the Lomiri Weather App itself.
The meteorological terms are probably not easy to translate for the usual software translator, so special help might be required here.
Call for Translations: Lomiri Weather AppSo, if you feel entitled to help here, please join the Hosted Weblate service [1] and start working on Lomiri Weather App.
Thanks a lot!
light+love
Mike Gabriel (aka sunweaver)
[1] https://hosted.weblate.org/
[2] https://hosted.weblate.org/projects/lomiri/lomiri-weather-app/
mark.ie: Keyboard Navigation for a LocalGov Drupal website
Wouldn't it be cool if we could get around our LocalGov Drupal websites by using keyboard shortcuts?
Akademy 2024 Program Now Live
The Akademy 2024 Program is now available.
This year's Akademy will take place in Würzburg, a beautiful city where you can enjoy interesting and fascinating talks, panels and keynotes. And for those who prefer to participate remotely, Akademy will also be available online.
Akademy officially kicks off with a welcome event on Friday 6 September, followed by a series of talks on Saturday 7 September and Sunday 8 September. From Monday 9 to Thursday 12 September, there will be BoFs (Birds of a Feather), workshops, meetings, daytrip and training sessions.
The talks will cover KDE's goals, how we're doing with implementing other languages to code for KDE (Rust anyone?), what's new in the latest wave of desktop and mobile applications, how KDE Eco is saving the environment, backends, frontends, KDE for work, life and fun.
For example, Nicolas Fella will tell us what a software maintainer does and why they are crucial to a project's survival, Aleix Pol Gonzalez will demystify embedded Linux, and Kevin Ottens will take us deep into the core of KDE Neon. You will also learn more about Plasma Mobile, funding your dream project and cool new KWin effects.
You can expect much, much more from a schedule packed with exciting talks and eye-opening presentations. Just take a look at the full program to discover everything that will be happening.
And that is not all! Stay tuned for the announcement of our two keynote speakers, coming soon here on Planet.
During the week KDE community members will attend BoFs and meet with colleagues with similar interests to work on their projects. They will also attend workshops, meetings, training sessions and daytrip until the event closes on 12 September.
Python Bytes: #392 The votes have been counted
Russell Coker: Samsung Galaxy Note 9 Review
After the VoLTE saga [1] and the problems with battery life on the PinePhonePro [2] (which lasted 4 hours while idle with the screen off in my last test a few weeks ago) I’m running a Galaxy Note 9 [3] with the default Samsung OS as my daily driver.
I don’t think that many people will be rushing out to buy a 2018 phone regardless of my review. For someone who wants a phone of such age (which has decent hardware and a low price) then good options are the Pixel phones which are all supported by LineageOS.
I recommend not buying this phone due to the fact that it doesn’t have support for VoLTE with LineageOS (and presumably any other non-Samsung Android build) and doesn’t have support from any other OS. The One Plus 6/6T has Mobian support [4] as well as LineageOS support and is worth considering.
The Note 9 still has capable hardware by today’s standards. A 6.4″ display is about as big as most people want in their pocket and 2960×1440 resolution in that size (516dpi) is probably as high as most people can see without a magnifying glass. The model I’m using has 8G of RAM which is as much as the laptop I was using at the start of this year. I don’t think that many people will have things that they actually want to do on a phone which needs more hardware than this. The only hardware feature in new phones which beats this is the large folding screen in some recent phones, but $2500+ (the price of such phones in Australia) is too much IMHO and the second hand market for folding phones is poor due to the apparently high incidence of screens breaking.
The Note 9 has the “Dex” environment for running as a laptop if you connect it to a USB-C dock. It can run nicely with a 4K monitor with USB keyboard and mouse. The UI is very similar to that of older versions of Windows.
The Samsung version of Android seems mostly less useful than the stock Google version or the LineageOS version. The Samsung keyboard flags words such as “gay” as spelling errors and it can’t be uninstalled even when you install a better keyboard app. There is a “Bixby” button on the side of the phone to launch the Bixby voice recognition app which can’t be mapped to any useful purpose, The Google keyboard has a voice dictation option which I will try out some time but that’s all I desire in terms of voice recognition. There are alerts about Samsung special deals and configuration options including something about signing in to some service and having it donate money to charity, I doubt that any users want such features. Apart from Dex the Samsung Android build is a good advert for LineageOS.
The screen has curved sides for no good reason. This makes it more difficult to make a protective phone case as a case can’t extend beyond the screen at the sides and therefore if it’s dropped and hits an edge (step, table, etc) then the glass can make direct contact with something. Also the curved sides reflect sunlight in all directions, this means that the user has to go to more effort to avoid reflecting the sun into their eyes and that a passenger can more easily reflect sunlight into the eyes of a car driver. It’s an impressive engineering feat to make a curved touch-screen but it doesn’t do any good for users.
The stylus is good as always and the screen is AMOLED so it doesn’t waste much power when in dark mode. There is a configuration option to display a clock all the time when the screen is locked because that apparently doesn’t use much power. I haven’t felt inclined to enable the always on screen but it’s a nice feature for those who like such things.
The VoLTE implementation is apparently a bit unusual so it’s not supported by LineageOS and didn’t work on Droidian for the small amount of time that Droidian supported it.
Generally this phone is quite nice hardware it’s just a pity that it demonstrates all of the downsides to buying a non-Pixel phone.
- [1] https://etbe.coker.com.au/2024/07/01/volte-australia/
- [2] https://etbe.coker.com.au/2023/10/11/pinephone-status/
- [3] https://en.wikipedia.org/wiki/Samsung_Galaxy_Note_9
- [4] https://wiki.debian.org/InstallingDebianOn/OnePlus/OnePlus6
Related posts:
- Samsung Galaxy Note 2 A few weeks ago I bought a new Samsung Galaxy...
- Samsung Galaxy Note 3 In June last year I bought a Samsung Galaxy Note...
- Samsung Galaxy Note 10.1 2014 In May 2014 I bought a Samsung Galaxy Note 10.1...
Gunnar Wolf: Scholarly spam • «Wulfenia»
I just got one of those utterly funny spam messages… And yes, I recognize everybody likes building a name for themselves. But some spammers are downright silly.
I just got the following mail:
From: Hermine Wolf <hwolf850@gmail.com> To: me, obviously 😉 Date: Mon, 15 Jul 2024 22:18:58 -0700 Subject: Make sure that your manuscript gets indexed and showcased in the prestigious Scopus database soon. Message-ID: <CAEZZb3XCXSc_YOeR7KtnoSK4i3OhD=FH7u+A5xSMsYvhQZojQA@mail.gmail.com> This message has visual elements included. If they don't display, please update your email preferences. *Dear Esteemed Author,* Upon careful examination of your recent research articles available online, we are excited to invite you to submit your latest work to our esteemed journal, '*WULFENIA*'. Renowned for upholding high standards of excellence in peer-reviewed academic research spanning various fields, our journal is committed to promoting innovative ideas and driving advancements in theoretical and applied sciences, engineering, natural sciences, and social sciences. 'WULFENIA' takes pride in its impressive 5-year impact factor of *1.000* and is highly respected in prestigious databases including the Science Citation Index Expanded (ISI Thomson Reuters), Index Copernicus, Elsevier BIOBASE, and BIOSIS Previews. *Wulfenia submission page:* [image: research--check.png][image: scrutiny-table-chat.png][image: exchange-check.png][image: interaction.png] . Please don't reply to this email We sincerely value your consideration of 'WULFENIA' as a platform to present your scholarly work. We eagerly anticipate receiving your valuable contributions. *Best regards,* Professor Dr. Vienna S. FranzWho cares what Wulfenia is about? It’s about you, my stupid Wolf cousin!
Drupal Starshot blog: Join the Drupal Starshot team as a track lead
Drupal Starshot seeks track leads to drive key project components. Apply by July 31st and help bring Drupal Starshot to life!
The Drupal Starshot initiative has been making significant progress behind the scenes, and I'm excited to share some updates with the community.
Leadership team formation and product definitionOver the past few months, we've been working diligently on Drupal Starshot. One of our first steps was to appoint a leadership team to guide the project. With the leadership team in place as well as the new Starshot Advisory Council, we shifted our focus to defining the product. We've made substantial progress on this front and will be sharing more details about the product strategy in the coming weeks.
Introducing Drupal Starshot tracksWe already started to break down the initiative into manageable components, and are introducing the concept of "tracks". Tracks are smaller, focused parts of the Drupal Starshot project that allow for targeted development and contributions. We've already published the first set of tracks on the Drupal Starshot issue queue on Drupal.org.
Example tracks include:
- Creating Drupal Recipes for features like contact forms, advanced search, events, SEO and more.
- Enhancing the Drupal installer to enable Recipes during installation.
- Updating Drupal.org for Starshot, including product marketing and a trial experience.
While many tracks are technical and need help from developers, most of the tracks need contribution from designers, UX experts, marketers, testers and site builders.
Recruiting more track leadsSeveral tracks already have track leads and have made significant progress:
- Matt Glaman is spearheading the development of a trial experience.
- The marketing team, led by Suzanne Dergacheva, is crafting product marketing documentation.
- Martin Anderson-Clutz has been appointed as the track lead for event management.
However, we need many additional track leads to drive our remaining tracks to completion.
We're now accepting applications for track lead positions. Interested individuals and organizations can apply by completing our application form. The application window closes on July 31st, two weeks from today.
Key responsibilities of a track leadTrack leads can be individuals, teams, or organizations, including Drupal Certified Partners. While technical expertise is beneficial, the role primarily focuses on strategic coordination and project management. Key responsibilities include:
- Defining and validating requirements to ensure the track meets the expectations of our target audience.
- Developing and maintaining a prioritized task list, including creating milestones and timelines.
- Overseeing and driving the track's implementation.
- Collaborating with key stakeholders, including the Drupal Starshot leadership team, module maintainers, the marketing team, etc.
- Communicating progress to the community (e.g. blogging).
After the application deadline, the Drupal Starshot Leadership Team will review the applications and appoint track leads. We expect to announce the selected track leads in the first week of August.
While the application period is open, we will be available to answer any questions you may have. Feel free to reach out to us through the Drupal.org issue queue, or join us in an upcoming zoom meeting (details to be announced / figured out).
Looking ahead to DrupalCon BarcelonaOur goal is to make significant progress on these tracks by DrupalCon Barcelona, where we plan to showcase the advancements we've made. We're excited about the momentum building around Drupal Starshot and can't wait to see the contributions from the community.
If you're passionate about Drupal and want to play a key role in shaping its future, consider applying for a track lead position.
Stay tuned for more updates on Drupal Starshot, and thank you for your continued support of the Drupal community.
— Dries Buytaert
Nonprofit Drupal posts: July Drupal for Nonprofits Chat
Join us THURSDAY, July 18 at 1pm ET / 10am PT, for our regularly scheduled call to chat about all things Drupal and nonprofits. (Convert to your local time zone.) We'll be taking August off, so this is the last chat of the summer.
We don't have anything specific on the agenda this month, so we'll have plenty of time to discuss anything that's on our minds at the intersection of Drupal and nonprofits. Got something specific you want to talk about? Feel free to share ahead of time in our collaborative Google doc: https://nten.org/drupal/notes!
All nonprofit Drupal devs and users, regardless of experience level, are always welcome on this call.
This free call is sponsored by NTEN.org and open to everyone.
-
Join the call: https://us02web.zoom.us/j/81817469653
-
Meeting ID: 818 1746 9653
Passcode: 551681 -
One tap mobile:
+16699006833,,81817469653# US (San Jose)
+13462487799,,81817469653# US (Houston) -
Dial by your location:
+1 669 900 6833 US (San Jose)
+1 346 248 7799 US (Houston)
+1 253 215 8782 US (Tacoma)
+1 929 205 6099 US (New York)
+1 301 715 8592 US (Washington DC)
+1 312 626 6799 US (Chicago) -
Find your local number: https://us02web.zoom.us/u/kpV1o65N
-
- Follow along on Google Docs: https://nten.org/drupal/notes
PyCoder’s Weekly: Issue #638 (July 16, 2024)
#638 – JULY 16, 2024
View in Browser »
In this course, Philipp helps you customize your Visual Studio Code settings to switch from a basic cluttered look to a clean presentable look. This is not just pleasant on the eyes, but also gives you a nice user interface if you want to share on a Zoom call or screen recording.
REAL PYTHON course
A PyPI admin accidentally leaked credentials into a Docker container. It has since been fixed and the credentials revoked. This is the report by that same admin outlining what happened and how to help prevent similar mistakes in the future.
EE DURBIN
Discover how to create, accelerate, and deploy data pipelines with RAPIDS for GPU-accelerated data science workflows. Take one of our Data Science courses for free when you join the NVIDIA Developer Program →
NVIDIA sponsor
An overview of the ongoing efforts to improve and roll out support for free-threaded CPython throughout the Python open source ecosystem. Associated Hacker News discussion.
RALF GOMMERS
KIWIPYCON.NZ • Shared by Kiwi PyCon
Quiz: Split Datasets With scikit-learn.train_test_split() Python Jobs Python Tutorial Writer (Anywhere) Python Video Course Instructor (Anywhere) Articles & Tutorials Free, Unbelievably Stupid Wi-Fi on Long-Haul Flights Deep in a need to procrastinate on a flight between London and San Francisco, Robert discovered that changing his name on an airline’s frequent flyer account was free over the plane’s WiFi. What’s a developer to do? Work on their tickets? No, create an entire TCP/IP protocol using this loophole. The result is the PySkyWiFi package.
ROBERT HEATON
Have you wondered about graph theory and how to start exploring it in Python? What resources and Python libraries can you use to experiment and learn more? This week on the show, former co-host David Amos returns to talk about what he’s been up to and share his knowledge about graph theory in Python.
REAL PYTHON
This collection of thoughts outlines how Evan approaches coding, with the understanding that this might change in the future. His beliefs include using spikes, the difference between simple and easy, a preference for enums over booleans, and more.
EVAN HAHN
Have you ever had the situation where you’ve got a nested loop and need to break out of the outer one? One way of dealing with this problem is refactoring the loop to use a generator. This post shows you how.
RODRIGO GIRÃO SERRÃO
There are so many conferences and so many videos, you can’t possibly watch them all. This post shows you how to extract information to summarize a talk so you can quickly decide what you want to watch.
GONÇALO VALÉRIO
Learn how to build a functional pastebin service using Python and Flask. This tutorial covers web development basics, file handling, and syntax highlighting.
MUHAMMAD RAZA
This blog post shows how failing to use functools.wraps can cause issues with FlaskAPI. Learn why you should always use wraps and what went wrong.
SUYOG DAHAL
Overview of Python’s Package management ecosystem in 2024 and associated Hacker News Discussion
LARRY DU
Rich Pixels, a package from one of the folks at Textual, allows you to create images in your terminal and display them.
MIKE DRISCOLL
This tutorial discusses the rules and conventions for choosing Python function names and why they’re important.
REAL PYTHON
This tutorial looks at how use HTMX with FastAPI by creating a simple todo web app and deploying it on Render.
PAUL ESCH-LAURENT • Shared by Michael Herman
EVIDENTLYAI.COM • Shared by Daria Maliugina
reladiff: High-Perf Diffing of Large Datasets Across Databases Yen: The Last Python Environment Manager You’ll Ever NeedGITHUB.COM/TUSHARSADHWANI • Shared by Tushar Sadhwani
Events Weekly Real Python Office Hours Q&A (Virtual) July 17, 2024
REALPYTHON.COM
July 18, 2024
MEETUP.COM
July 18, 2024
PYLADIES.COM
July 19 to July 20, 2024
MEETUP.COM
July 24, 2024
MEETUP.COM
July 24, 2024
MEETUP.COM
July 27 to July 28, 2024
PYOHIO.ORG
Happy Pythoning!
This was PyCoder’s Weekly Issue #638.
View in Browser »
[ Subscribe to 🐍 PyCoder’s Weekly 💌 – Get the best Python news, articles, and tutorials delivered to your inbox once a week >> Click here to learn more ]