Ubuntu Now Running on Apple M1 Silicon

Security company Corellium has announced that it has successfully ported Ubuntu to Apple Mac devices containing Apple’s M1 processor.

This is a native port with the Ubuntu operating system running directly on the M1 processor, and does not involve any virtualization or emulation layers.

Installation of Ubuntu onto Apple Silicon Mac devices is a multistep process involving the following stages:

  • Download and install the Ubuntu POC root fs tar archive, extract it and copy it onto a USB drive using the dd command:
tar -xjvf ubuntu-20.10-preinstalled-desktop-arm64+raspi.img.bz2
sudo dd if=ubuntu-20.10-preinstalled-desktop-arm64+raspi.img of=<your usb device here> bs=1m
  • Connect the USB drive to the Mac system via the USB-C port (Corellium indicates that the USB-A port will not work).
  • Boot the Mac into “One True Recovery” (1TR) mode by powering off the system and the holding the power button until the boot option screen appears. Select the terminal option from the resulting menu.
  • Within the terminal, run the following command:
/bin/bash -c "$(curl -fsSL https://downloads.corellium.info/linuxsetup.sh)"
  • Enter your login credentials when prompted to do so. After the kernel has been installed, type “reboot” to restart the system.
  • Once the system has restarted, enter user name “pi” and password “raspberry” to sign into the Ubuntu system.

To return to macOS at any future point, start the system in one true recovery mode, open the terminal once again, and run the following command:

bputil -n

Raspberry Pi Pico Launched and Priced at $4

Raspberry Pi has just launched the new Pico microcontroller board. The board includes 264KB of on-chip SRAM, 2MB of on-board QSPI flash and a single USB 1.1 controller and port. The board also supports the addition of 16MB of off-chip flash memory. I/O options include I2C, SPI and PIO.

Two features of the Raspberry Pi Pico of note are the $4 price tag and the fact that it runs on Raspberry Pi’s custom silicon in the form of the RP2040. The RP2040 microcontroller was designed by Raspberry Pi and includes an Arm Cortex-M0+ processor.

Designed to be programmed using C/C++ (time to dust off your old copy of Kernighan and Ritchie) and MicroPython, loading your code onto the device is as simple as connecting to your development system using the USB port and dragging and dropping a .uf2 file onto the device flash storage.

If you haven’t ventured into the world of Raspberry Pi the Pico, at only $4, may just be the chance you were waiting for.

Google Has Deprecated the IntentService Class

As of Android API 30 (otherwise known as Android 11) the IntentService class has been deprecated. Provided since Android API 3, the purpose of IntentService was to allow asynchronous tasks to be performed without blocking the main thread.

The deprecation is one of a number of steps introduced starting with Android 8.0 (API 26) to limit the actions that can be performed while an app is in the background. This is a concept broadly referred to by Google as “Background Execution Limits”. The main goal of these changes is to prevent background services from degrading the overall performance of the system in terms of resource use (CPU, memory etc) and battery life.

Going forward, background services should be implemented using job scheduling. Developers using IntentServices in their apps should now consider moving to JobIntentService. JobIntentService provides a helper for working with the JobScheduler API and allows IntentService dependent code to be migrated to the job scheduling API with minimal code changes.

Android Studio 4.2 Beta 3 Released

Google has now released Android Studio 4.2 Beta 3 for early access testing and is available via the Beta channel. If your copy of Android Studio is already subscribed to the Beta channel, it can be downloaded using the Help > Check for Updates (Android Studio > Check for Updates) menu option.

Rather than introducing any major sweeping changes to Android Studio, the 4.2 release appears so far to focus mainly on bug fixes. This may change as subsequent Beta releases are issued.

If you want to try out this Beta release alongside the current Android Studio 4.1 version, simply download and install a separate copy via the following link:

https://developer.android.com/studio/preview/index.html

Red Hat Announces There will be No CentOS 9

Red Hat has announced that the end of life date for CentOS 8 will be brought forward to December 31, 2021 after which there will be no further updates. They have also announced that when RHEL 9 ships, there will be no CentOS 9 equivalent.

In place of the “version” based releases, users will need to switch the CentOS Stream, a version of CentOS which will continually update with new features and bug fixes.

This essentially means that CentOS will migrate from being a free version of Red Hat Enterprise Linux (RHEL) to being a testing ground for the next version of RHEL (joining the Fedora distribution in this capacity) consisting of a rolling sequence of updates.

An exciting prospect for users who like to live on the edge, but probably less appealing for production level deployments that need the most stable and secure platform, instead of the latest, untested package updates.

It is hard to predict at this stage the types of users that will stay with CentOS after CentOS 8 reaches EOL. It is also possible, though probably unlikely, that an independent group will emerge to create a new Linux distribution based on the RHEL source code.

Google Deprecating Android AsyncTask

If you are writing multi-threaded asynchronous code using Android Studio you can’t help but have noticed that any reference to AsyncTask appears with a strikethrough. This, as we all know, is the dreaded sign that a feature of the Android SDK on which we have relied for years (in the case of AsyncTask it has been a decade) has been deprecated.

It is uncertain how long before the AsyncTask class is removed from a future Android release. All we know is that eventually it will be gone.

From what we have learned the removal of AsyncTask is the result of a tendency for memory leaks to occur when implementing multi-threading using this class.

For Kotlin programmers, the recommended course of action is to switch to using Coroutines. For those still programming in Java, the only option is to directly work with threads, or to use the Java concurrent utilities (java.util.concurrent). For more details read A Basic Overview of Java Threads, Handlers and Executors.

Apple Announces Small Business Program

After coming under pressure for taking a 30% commission on all App Store sales, Apple has now announced the App Store Small Business Program. Businesses that qualify for the program will see commissions dropped to 15%.

To qualify for this program, your business must have earned less than $1 million for all apps during 2020. If your business was fortunate enough to exceed $1 million in sales after qualifying, Apple will increase the commission to the usual high rate the following year.

Details of the program can be found online at:

https://developer.apple.com/app-store/small-business-program/

iOS 14.3 Fails to Fix Circular ProgressView Bug

If you’ve been waiting for Apple fix the bug in the SwiftUI ProgressView that causes a circular view to appear using the indeterminate UI then you are out of luck.

Having downloaded and tested iOS 14 with Xcode 12.3 it seems pretty clear to us that the bug is still there. We tried the following code:

struct ContentView: View {
    
    @State private var progress: Double = 1.0
    
    var body: some View {

        VStack {
            ProgressView("Task Progress", value: progress, total: 100)
                .progressViewStyle(CircularProgressViewStyle())
            Slider(value: $progress, in: 1...100, step: 0.1)
        }
        .padding()
    }
}

Sadly, when we previewed this code, we still get the spinning indeterminate indicator:

The bug is still listed as open in Apple’s feedback system so we live in hope. In teh meantime, create your own custom circular ProgressView here.

JingOS Linux Arriving with iPadOS-like UI.

Jingling Tech has announced that it’s JingOS Linux distribution will be available for download on January 31, 2021.

Based on the Ubuntu Linux distribution, JingOS has a user interface and experience which JingLing Tech compares to that of Apple’s iPadOS. In addition to the ability to existing Linux desktop apps, JingOS also comes with a set of native tablet friendly apps including calendar, file system browser, media player and calculator.

Watch the preview video below to see this new OS in action:

JingOS hopes to capitalize on the move from laptops to multitouch tablet-style devices with detachable keyboards and will initially target the Microsoft Surface Pro 6 and Huawei Matebook 14 devices (the latter of which has a non-detachable keyboard).

Future plans include targeting phones and non- x86 based devices (such as ARM) and the introduction of a JingOS App Store.