package management – How do i install focal fossa software on groovy gorilla from ppa

I have Ubuntu 20.10. I am trying to install Handbrake from its ppa. when i added handbrake repositories and ran sudo apt update i got the following message

Ign:11 http://ppa.launchpad.net/stebbins/handbrake-releases/ubuntu groovy InRelease
Err:12 http://ppa.launchpad.net/stebbins/handbrake-releases/ubuntu groovy Release
404 Not Found (IP: 91.189.95.83 80)
Reading package lists… Done
E: The repository ‘http://ppa.launchpad.net/stebbins/handbrake-releases/ubuntu groovy Release’ does not have a Release file.
N: Updating from such a repository can’t be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

I went to the repository and tried to manually search for groovy packages and found none but there was a focal fossa package.What should i do?

BTW

  • snap packages are outdated
  • I am facing the same issue for other software also.(eg – f.lux…many more)

How can product managers ensure software quality?

I am a software engineer and I care deeply about my software quality, while I assume my product manager only cares about the final product. I can’t imagine my product manager would care how I get my work done, only that it is done. How can a product manager ensure the work I do as an engineer is quality work?

A few thoughts:

Schedule Testing
For this it seems like something obvious to just ask that all my code is tested. But while I may test my code it doesn’t account for the quality of the code. I may write terrible code and test it, and we’d only pay the penalty in the future when we add new features.

Small Scope – Catch Time Delays Early
One other idea is to have small chunks of work with estimated times, and if the estimate is too much then it may be a sign of code quality and we can plan to address that early. However, as an engineer I usually already know if my code is good or I’m rushing through it. While this seems to make sense it’s also seems like a difficult idea to sell to the business team.

Hire Better Engineers
This is the only idea I know of. Start with good engineers and make them leads. I’m putting this idea here as a baseline. But not everyone is the best. In my experience any requests from a lead seems like time taken out of the final product, then it’s convincing the product that we need more time to have the same the exact same output except with more reliable code base.

Unless the business team fully understands and budgets the need for quality code, it seems like every project will bloat until it’s too late. What else can be done to have code quality be part of the business?

computational number theory – Software for $S$-unit equation

Is there any implementation available of an algorithm which solves in full generality the $S$-unit equation $x+y=1$ in a number field? It seems that Magma solves $ax+by=c$ but only in the algebraic integers, while Sage solves $x+y=1$ with $x,y$ $S$-integers, but only for $S$ the set of primes over a fixed rational primes. Is that true? Is there any other implementation available?

How to mount on Mac by SOFTWARE a USB SSD that shows not mounted?

How to mount on Mac by SOFTWARE a USB SSD that shows not mounted?

System: macOS 10.12.6 (16G2136) Sierra. If the USB SSD is connected before rebooting or cold booting the Mac, then it shows. If the Mac is booted from an external USB SSD, no problem (after booting or rebooting, the afterwards plugged USB SSD show). But if the Mac is booted from the internal SSD, then plugging afterwards an external USB SSD does not mount it. Unplugging and plugging it again (or plugging other USB SSD in other USB port; sometimes requiring more than one trial) fixes it for such SSD and any other until the Mac is rebooted or booted, in which case the same issue arises.

The USB disk not mounted does not show in Disk Utility or Mountain. Using Terminal “diskutil list” does not show it. It does not show in “Apple – About This Mac – System Report – Hardware – Storage”, but shows on the latter selecting “…–Hardware – USB”. Other formatting, maintenance, repair or recovery utilities do not show such unmounted USB SSD until it shows mounted on the Desktop.

software – First time having users – how to deal with backwards compatability?

Well first, this is a good use for regression tests. Whenever you make a change to the file format, have saved and documented examples of files in the old format. Then make unit tests that try and load in the old format and assert that they load in correctly. This can be as simple as

def assert_can_read_v1():
    with open("legacy/v1/example_1.wtvr") as f:
        data_structure = read_logic(f)
    assert data_structure.title == "abc"
    assert data_structure.stuff == "..."

But that’s from a process perspective, how to make sure you don’t mess up. How do you actually write the code?

Well, its gonna depend on a lot of factors including on how different the files are and what kind of format things are stored in.

If things are stored in a text based, or otherwise generic, format like JSON or XML or in a data format that is built to allow extra fields in data like ProtocolBuffers or CapnProto then adding fields should be fairly simple. You just take all the places where you read the field and add some default value if the field is not there.

If you are using a format that doesn’t allow for that kind of extension or where removing fields is backwards incompatible or where you are making larger incompatible changes, you can write some predicate that tells you what “version” of file you have and dispatch to the right functionality. You can make this easier on yourself by adding explicit “version” fields to things, but that is on you.

def read_file(file):
    contents = parse_format(file)
    if contents.version == 1:
        return parse_contents_v1(contents)
    else:
        return parse_contents_v2(contents)

As a corollary, this is easier to do if you have some model in your code that is “separate” from what your config file reads into. That way you have some place to put this massaging logic.

So you could start with something like this.

import dataclasses
import json

@dataclasses.dataclass(frozen=True)
class Project:
    name: str

    @staticmethod
    def read_from_file(file_path):
        with open(file_path, "r") as f:
            contents = json.load(f)
        return Project(name=contents("name"))

And do some minor upgrades to get this

import dataclasses
import json

from typing import Optional

@dataclasses.dataclass(frozen=True)
class Project:
    name: str
    description: Optional(str)

    @staticmethod
    def read_from_file(file_path):
        with open(file_path, "r") as f:
            contents = json.load(f)
        return Project(
            name=contents("name"),
            description=contents.get("description", None)
        )

And then maybe need to do a major overhaul and end up with

import dataclasses
import json

from typing import Optional

@dataclasses.dataclass(frozen=True)
class Project:
    name: str
    description: Optional(str)

    @staticmethod
    def read_from_file(file_path):
        with open(file_path, "r") as f:
            contents = json.load(f)
        version = contents.get("version", None)
        if version is None:
            return Project(
                name=contents("name"),
                description=contents.get("description", None)
            )
        else:
            name, description = contents("stuff").split(":::", 1)
            return Project(name=name, description=description)

Does that sorta make sense? There are no hard set rules, but having the very first thing – regression tests – can help a lot.

c# – Spoofing a UDP stream from a piece of software, to a third party app, in order to integrate with that app

I am working on a project where i am attempting to spoof a gps command from X-Plane 11 to allow a flight simulator that i am working on to communicate with an electroic flight bag app (Oz Runways)

The X-Plane software outputs a GPS stream that is sent to the app, which the app then interprets.
it is sent via UDP as an ascii Stream.

When the stream is sent, it shows the gps position of the plane in Xplane on a moving mapp in the App, on an Ipad.

An Example Stream: “XGPS1,-122.578640,47.264560,87.9936,8.2152,68.5358

At this stage i have tried taking the exact udp message (from Xplane, intercepted by Wireshark) and sending it from another program called Packet Sender. Sending the stream does not work, but sending the entire packet (which seems wrong) seems to give me the desired result.
The Entire Packet: “>ûÿÛEN©)À¨À¨ò¿i¿j:XGPS1,-122.578640,47.264560,87.9936,8.2152,68.5358

This makes the entire packet of this UDP message: “>ûÿÛEe®
À¨À¨ò¿i¿jQ«>ûÿÛEP{ÍÀ¨À¨ò¿i¿j<XGPS1,-122.307752,47.463464,124.7732,180.0498,0.0000

it seems like it doubles up on the leading data, like ip and port adresses etc.

So while this seems to work, when using my piece of software, which will change the numbers to send through the correct position and speed, but right now is just a simple c# udp sender it refuses to work.

    void openUDP()
    {
        udpClient = new UdpClient(49001);
        udpClient.Connect(IPAddress.Parse(textBoxip.Text), int.Parse(textBoxport.Text));
    }

    void DoUDPThings()
    {
        Byte() sendBytes = Encoding.UTF8.GetBytes(textBoxmsg.Text);
        try
        {
            udpClient.Send(sendBytes, sendBytes.Length);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
        }
    }

This is the code for my Sender, in order to mimic the Xplane software as much as possible i have set it to use the exact output port, and the text boxes in my win form feed in the message, ip address, and remote port number.

The actual question i suppose i am asking here, is why would copying the start of packet data work in Packet sender in the first place, and not in my c# program?

Below are two packets from wireshark one of which is from Xplane, the other is from my piece of software.

My software: 
183eef87a307001cbffbffdb08004500004ea95d000080110000c0a80006c0a800f2bf69bf6a003a829458475053312c2d3132322e3537383634302c34372e3236343536302c38372e393933362c382e323135322c36382e35333538

>ûÿÛEN©)À¨À¨ò¿i¿j:XGPS1,-122.578640,47.264560,87.9936,8.2152,68.5358
From Xplane: 
183eef87a307001cbffbffdb080045000050a94d000080110000c0a80006c0a800f2bf69bf6a003c829658475053312c2d3132322e3330323539322c34372e3436303236382c3133362e363139332c3236382e353936362c302e30373137

>ûÿÛEP©MÀ¨À¨ò¿i¿j<XGPS1,-122.302592,47.460268,136.6193,268.5966,0.0717

I understand that this is a very specific issue, but i simply do not understand why the same stream works from one piece of software and not another.

Lost Bitcoin with installing new software

I have a problem. I didn`t look at the Bitcoin for over a year. But when I looked, there was a new version. I updated it to the latest version and then made the mistake to make a new account instead of using the old account. So when I look at my wallet, it is empty. At my old account is the money. How can I install the old account and see my money back?
kind regards