Firefox is distributed as a snap now on Ubuntu.
Lets have a look at Firefox in Ubuntu 22.04 LTS. Things have changed. There is some trading of benefits for performance.
Starting with Ubuntu 21.10, the default browser, Firefox transitioned to being distributed as a snap. The benefits are confinement in the snap sandbox, authentic updates directly from Mozilla and support for any snapd equipped distribution.
The trade-offs are in performance, due to the sandboxing inherent in the snap architecture. Browser perfomance is something of a bogeyman for Firefox so this would appear to be a high priority for both organisations.
My Flutter at Google I/O ‘22 Recap
If you want to build beautiful, multi-platform native applications for mobile, web, and desktop from a single codebase with Flutter, Google's open source UI toolkit, I’d recommend ‘What's new in Flutter 3’ to everyone and the sessions below whatever your level of interest or experience.
Flutter 3.0 support for Mac computers with Apple silicon is essential and timely
The Flutter team say that Flutter 3 delivers "stable support for macOS and Linux apps, an upgrade of the Flutter/Firebase integration to a fully-supported, core part of the Firebase offering and support for Mac computers with Apple silicon". I do not doubt these claims. I have already proved for myself in my article "Installing Flutter 3.0 on a Mac Studio running macOS Monterey, and creating your first app, in about 15 minutes" that Flutter 3.0 fully supports support for Mac computers with Apple silicon without the Rosetta framwework, not just for the development environment, but also the applications it can produce for macOS! Flutter has for the past few years been primarily about mobile apps for iOS and Android. I suspect that is the case for most developers but as a strategy for Google, the development, launch and adoption of Flutter and Dart has always had a larger plan to "democratize access to rich applications across all devices".
Mobile first, but stable for macOS and Linux too
Flutter 3.0 adds stable support for macOS and Linux apps to the existing platform support for iOS, Android, web and Windows. Flutter has always had this ambition. Mobile apps were simply the easiest entry point and best opportunity for success compared to, say starting with "Hey kids, heres a new way to write apps for Chrome".
Released on 16 May 2022
macOS 12.4 contains enhancements and a huge number, for Apple, of security updates and Apple recommend it for all users of devices that can be updated.
TL:DR— Install macOS 12.4 right away if you can. Important security fixes, enchancements and unspecified bug fixes.
Installing Flutter 3.0 on a Mac Studio running macOS Monterey
Running the flutter 3.0 based 'Hello, world' app on a macOS computer with Apple silicon .
Flutter 3.0 can now create macOS desktop apps which run on Mac computers with Apple silicon. This is the hello world example app.
TL:DR— Getting this running took around a dozen commands, and a bit of default question answering and installer clicking for Flutter, Xcode and Android Studio, both of which you have to launch at least once after installation. It took about 15 minutes to set it up. I use a folder called 'Projects' in my home directory but you can choose whatever name makes sense for you.
Configuring a Joomla 4.1.3 server on Ubuntu Desktop 22.04 LTS
First things first. Joomla 4.1.3 works fine on Ubuntu Desktop 22.04 LTS. It just needs a little configuration, especially if you've come from a distribution upgrade and perhaps a different version of PHP. There are some dependencies which need to be resolved and they were quite complex so I wrote it down in case it needed to do it again or it was useful to someone.
TL:DR — Ubuntu 22.04 LTS is PHP 8.1 by default, Joomla 4.1.3 supports PHP 8.1. You may need to configure things to make it work.
Read more: Joomla 4.1.x on Ubuntu 22.04 LTS with Php 8.1 (whew)
SSL is easy now, no reason to avoid even on development computers
Let’s Encrypt is a nonprofit Certificate Authority providing certificates so that your websites can use secure connections. Certbot is free open source software that allows you to easily create Let’s Encrypt SSL
TL:DR — It takes about five minutes to get SSL configured on Apache on Ubuntu 22.04 LTS.
Apple iPod Touch 7th Gen (A2178) - RIP
RIP to the final iPod, the iPod9,1 model number A2178. This model lasted from May 2019 - May 2022. In Space Gray, Gold, Silver, Pink, Blue, and even (PRODUCT) RED, with 32, 128, or 256 GB of storage. The only way to get one now is 'renewed' from Amazon or second hand.
TL:DR — RIP iPod October 22, 2001 - May 10, 2022
New Mac, needs a backdoor account
I've always first set up a new mac with a backdoor so that I can get administrator access in case I ever royally screw it up. This has saved me more times than I care to remember.
TL:DR — It takes only a couple of minutes to set up a backdoor administrator account on macOS. Its totally worth it.
Using sysctl to find the exact processor installed in your Mac
Ubuntu Desktop 22.04 LTS (Jammy Jellyfish)
Canonical Ubuntu 22.04 LTS is now generally available. LTS stands for long term support. An Ubuntu LTS has a commitment from Canonical for ten years support and maintenance, with the initial five years available for free following Ubuntu’s mission. In April, every two years, Canonical release a new LTS where all of the developments from the previous two years accumulate into one up-to-date, feature-rich release. These releases focus on performance enhancement and stability. LTS is what you should be running in large scale enterprises, as general users or businesses unless you particularly need the more quickly but less long lived developer releases.
Terminal prompt with architecture
Terminal on macOS and Ubuntu Desktop is a power tool and it can be made better. There are lots of shell customisation utilities around but the most useful to me at least in software development and devops, is zsh-powerline which is an implementation of powerline shell which was inspired by the powerline statusline plugin for vim.
For me, modifications must not hurt performance, and should not be distracting. Prompt based elements must be things I really need to know about the current environment right now.
The text colours for me are about the colours of terminals in the past.
When you ssh to an different computer with the same zsh environment the prompt changes. Thats what I need.
This prompt shows username, computername, architecture, git branch, exit status of the last command, OS symbol and shell prompt. As you can see when you ssh to an Intel based Mac it changes. Thats what I needed.
Terminal prompt with architecture
Terminal on macOS and Ubuntu Desktop is a power tool and it can be made better. There are lots of shell customisation utilities around but the most useful to me at least in software development and devops, is zsh-powerline which is an implementation of powerline shell which was inspired by the powerline statusline plugin for vim.
For me, modifications must not hurt performance, and should not be distracting. Prompt based elements must be things I really need to know about the current environment right now.
The text colours are a reminder of my favourite real terminal :)
When you ssh to an different computer with the same zsh environment the prompt displays the username, computername, cpu architecture, git branch and OS symbol.
Git branch is only if you 'cd' into a repo. OS Symbol is green if the last command exited properly, red if not.
Thats what I need to know, and it isn't too distracting.
By default Joomla 4 uses the icon assets in /media/system/images/
. These are the Joomla logo formatted for use as a favicon. (Like this: ).
<link href="/media/system/images/joomla-favicon.svg" rel="icon" type="image/svg+xml">
<link href="/media/system/images/favicon.ico" rel="alternate icon" type="image/vnd.microsoft.icon">
Custom Cassiopeia template favicon
There are a couple of ways of getting custom favicons (Like this: ) in your new Joomla 4 site based on the Cassiopeia template
RSS is much maligned but it is a really simple syndication format for news feeds which has been around for decades. It represents an easy way to add freshly updated content to your Joomla site automatically.
Creating an RSS feed in a Joomla 4 site
To create one, in Joomla 4
- Open the Joomla Administrator and log in
- Select Feeds under Components
- Click or tap the 'New' Button
- Provide a title for the feed
- Enter the link and optionally a description
- Save & Close
That's it. Your feed is created. Now you need to make it available on your Joomla site.
You can make it available in a number of formats, by adding a menu item to your Joomla site.
I wanted to make my Joomla sites interactions with Twitter a little bit more engaging. Twitter cards already provide a nice solution for that. Experiments showed me that I got more traffic if they were enabled. So I set about automating it for anyone who tweets a link to my content. Heres how I did it and the code
Read more: socialcards - a twitter meta data plugin for Joomla 4
Buttons
Joomla can use Bootstrap’s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.
Some button styles use a light foreground color, and should only be used on a dark background in order to have sufficient contrast.
A text button has no decoration or outline
Module positions
The module positions for Cassiopeia are named placeholders which determine the positioning of content provided by published modules. Assign a module to a position, determine which pages the module should display on and publish it and then the module will output content to that page.
Module chrome
Modules can have 'module chrome' which is display oriented styling code to provide templates with variation. Module chrome options for Cassiopeia are nothing, card
and noCard
Read more: Module positions in the Cassiopeia template for Joomla 4
Customising the topbar in the Cassiopeia template for Joomla 4
Cassiopeia is the new default site template for Joomla 4. It has some simple but brilliant capabilities.
This site has a banner above the site logo and menu. This is achieved using a Site Module. To create it:
- Log in to Site administration
- Navigate to
Site Modules
- Add a
Custom
module to your site. (scroll to find it or use search). - In the
Module
tab, add a meaningful Title - Then turn off Title and set the module position to
topbar
- In the
Options
tab add the banner image you wish to use - Save the Custom module.
- Refresh your site and if the template is set to fluid it will fill the browser width and resize as you resize it.
Read more: A responsive image banner for the topbar position in the Cassiopeia template for Joomla 4
A USB Type-C-powered companion display that's compatible with my M1 based Mac Mini, my Google Chromebook, and my iPad Pro. If you need two screens and work away from home at times this is the answer.
TL:DR — I ordered one from Amazon UK and it arrived next day. It works with my M1 based Mac Mini, my Google Chromebook, and my iPad Pro. It has a resolution of 1920x1080 which is commonly known as 'Full HD'. It is a brilliant addition to my toolkit as I travel between places a good bit and always miss my second screen. Pics below:
Read more: Powerful ASUS USB-C Second screen for Macbook, Chromebook, iPad Pro
Ridiculously Responsive Social Sharing Buttons for Joomla 4.x
This Joomla! plugin adds social sharing buttons and metadata optimized for Open Graph and Twitter to com_content items. It is an official Joomla Project plugin, primarily designed for use on the joomla.org website network. The plugin generates buttons like this. (Thise is an image, see the bigger one for the real buttons).
There is zero configuration required. Just install and enable the plugin.
TL:DR — Once built and uploaded it just worked!
Read more: Ridiculously Responsive Social Sharing Buttons for Joomla 4.x
(SM G900F)
Using a custom ROM from LineageOS, you can install Android 11 on a Samsung Galaxy S5 from 2014! You have to use rotten cryptic tools to install a custom recovery partition on the device before you can install Lineage OS on it. This isn't too difficult provided you aren't afraid of the command line. You install Lineage OS and then Open Google Apps should you want them before rebooting and - voila it works perfectly as far as I can tell - the Android build is up to date and has the latest security fixes in it and none of the Samsung crapware - either the built in obsolescence in these devices is staggering, or the S5 was supremely over specified at the time!
The Samsung Galaxy S5 is a discontinued Android-based smartphone with 4G LTE which was launched at Mobile World Congress in Barcelona, Spain, in 2014 and generally available in April 2014
As of 3.0, Homebrew supports Mac's with Apple silicon
I suppose the number one download for brew is wget
which is missing from macOS probably due to its GPL licence. curl
just isn't the same. I looked at building wget
from source but it is a quagmire worth avoiding. Installing it via Homebrew was simple and delightfully all of the correctarm64_big_sur.bottle
variety.
Installing Homebrew on an M1 based Mac is exactly the same as installing on an Intel Mac.
% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
TL:DR — It just works!
% brew doctor
Your system is ready to brew.
% brew install wget
==> Downloading https://ghcr.io/v2/homebrew/core/gettext/manifests/0.21
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/gettext/blobs/sha256:339b62b52ba86dfa73091d37341104b46c01ae354ca425000732df68930544
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:339b62b52ba86dfa73091d37341104b46c01ae354ca4250
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libunistring/manifests/0.9.10
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libunistring/blobs/sha256:73cc290ebcefd6354329317266d9e110e3a5967d0a8260d2cf7d4dd3e
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:73cc290ebcefd6354329317266d9e110e3a5967d0a8260d
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libidn2/manifests/2.3.2
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/libidn2/blobs/sha256:dbaac7e6e29ffa8c7c2b5e152fd6ee0118e547f90dc4b180c7f168c2f681c5
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:dbaac7e6e29ffa8c7c2b5e152fd6ee0118e547f90dc4b18
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/openssl/1.1/manifests/1.1.1k
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/openssl/1.1/blobs/sha256:0a75e0f116c0653bc7a2b422e5dc500e7e51557303aa4fca9c1a287861
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:0a75e0f116c0653bc7a2b422e5dc500e7e51557303aa4fc
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/wget/manifests/1.21.1-1
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/wget/blobs/sha256:ab03f58f6d9a4018b1b0bfd53e5b797fcd90b86b1d60b20948de499ec4d4c6b4
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:ab03f58f6d9a4018b1b0bfd53e5b797fcd90b86b1d60b20
######################################################################## 100.0%
==> Installing dependencies for wget: gettext, libunistring, libidn2 and openssl@1.1
==> Installing wget dependency: gettext
==> Pouring gettext--0.21.arm64_big_sur.bottle.tar.gz
🍺 /opt/homebrew/Cellar/gettext/0.21: 1,953 files, 20.8MB
==> Installing wget dependency: libunistring
==> Pouring libunistring--0.9.10.arm64_big_sur.bottle.tar.gz
🍺 /opt/homebrew/Cellar/libunistring/0.9.10: 55 files, 4.4MB
==> Installing wget dependency: libidn2
==> Pouring libidn2--2.3.2.arm64_big_sur.bottle.tar.gz
🍺 /opt/homebrew/Cellar/libidn2/2.3.2: 77 files, 885.5KB
==> Installing wget dependency: openssl@1.1
==> Pouring openssl@1.1--1.1.1k.arm64_big_sur.bottle.tar.gz
==> Regenerating CA certificate bundle from keychain, this may take a while...
🍺 /opt/homebrew/Cellar/openssl@1.1/1.1.1k: 8,071 files, 18MB
==> Installing wget
==> Pouring wget--1.21.1.arm64_big_sur.bottle.1.tar.gz
🍺 /opt/homebrew/Cellar/wget/1.21.1: 88 files, 4MB
%
l
TL:DR— Sublime Text is a proprietary text and code editor which is very popular among developers due to a simple, fast and distraction free interface, an ability to open all the files in a folder, support for third party plugins through a package control system, extensive language syntax highlighting, and a clickable minimap view of an entire file. Sublime Text runs on macOS, Linux, and Windows. For macOS it is a universal binary which means it fully supports Mac computers with Apple silicon introduced in late 2020. Sublime Text is one of the best text editors around.
Apple silicon support, licence changes and countless improvements
Version 4 now supports Apple silicon, and is downloadable from the makers website, Sublime HQ. There are countless changes since Sublime Text 3. The license key now includes three years of updates, rather than being tied to a specific version. This is a good change, to encourage people to keep up to date. The licence still remains valid after this time, with the last build over the three year period continuing to work. Sublime Text has always had a generous evaluation mode with a periodic nag to purchase a licence. It does not have reduced functionality for evaluation. The licence works on all platforms.
Just take me to the link
Sublime Text on ChromeOS
You can install the Linux version on ChromeOS
Sublime Text is a proprietary text and code editor which is very popular among developers due to a simple, fast and distraction free interface, an ability to open all the files in a folder, support for third party plugins through a package control system, extensive language syntax highlighting, and a clickable minimap view of an entire file. Sublime Text runs on macOS, Linux, and Windows. Sublime Text is one of the best text editors around. Its licence keys can be shared across platforms. If you use lots of different operating systems it is beneficial to have the same editor.
Before you start!
Before you start, you'll need to ensure you have a Linux capable Chromebook. Most are! In Settings Type 'Linux' and if its there you are all set. If not, well you can try updating your Chromebook, and if it is still not there its time to get a new Chromebook.
TL:DR — Just take me to the link Sublime Text download page.
Using an SSH key, you can connect and authenticate to remote git servers without supplying your username and personal access token at each visit. Inevitably, you'll end up using more than one provider, for example for public projects and for internal private one, or for a particular client who requires a particular Git repository provider be used. SSh keys are more than just a convenient reduction in admin. They are essential in a devops environment where scripts and hooks will be working with code and multiple accounts and servers.
It is surprisingly easy to set up SSH access to Git repositories, but there are important things to think through which means you need to think about what you are doing. Most providers ofhave good instructions, and you could do no better than to start by reading one, such as this page Connecting to GitHub with SSH. The principles will be the same whatever the Git repository hosting provider.
TL:DR — SSH access to multiple Git repositories is easy to set up, convenient and secure but be careful not to accidentally overwrite other existing keys.
Read more: Connecting to multiple Git repository providers with SSH
Subcategories
Flutter
Learning Flutter™ — Simultaneous publication of apps for Apple and Google Android devices
Flutter is an open source framework by Google for building beautiful, natively compiled, multi-platform applications from a single codebase.
I create mobile applications that can be published in the App Store and Google Play. I'm not a hard core developer, I have professional developers working with me in my clients and contracted work. But I am a product manager / interim CTO.
It seemed to me that going through the whole process of app creation and management and documenting it for others would be useful. I've been writing requirements and producing mobile applications for decades but I thought I'd like to learn at a far deeper level about Flutter just for fun and because cross platform applications are something I have a passion for. This is my learned experience of picking up these development tools and seeing what I can do.
Of course, one does not simply publish an app.
In order to publish an app you have to plan, code, build, test, publish, operate, monitor, manage and update it. This is a familiar pattern these days, its sometimes called 'devops', and it can't be avoided, for if you skip elements of it then updating your app or managing it might become impossible over time. You don't want that! So while this collection of articles is based around Flutter it is also about all the surrounding disciplines that need to be considered as part of development and operating a cross platform mobile application and the inevitable platform behind it.
Flutter starter app running on iPhone 14 Pro simulator on macOS Ventura (Intel)
Getting started with Flutter
This is the first part of a journey to build and publish a Flutter based app for the App Store and Google Play. Building the starter app on a Mac computer with Apple silicon. Start here.
Getting started with Flutter and building the starter app on a Mac computer with Apple silicon