Hello and welcome to the 392nd episode of Linux in the Ham Shack. In this episode, the hosts discuss amateur radio related horror films, an ISS EVA snafu, ham radio in the BSA, YOTA, Microsoft on the Raspberry Pi, software freedom, display servers and much more. We hope you enjoy this episode and also have a safe and prosperous upcoming week.
This week we are joined by Dr. Gerald Pfeifer, the Chief Technology Officer of SUSE and Chairman of the openSUSE Board for an interview about SUSE, openSUSE & his journey in Linux. Later in the show, we’re also covering Ubuntu’s new fluttering Desktop Installer and in the gaming section, we’ll travel to the viking world of Valheim. Plus we’ve also got our famous tips, tricks and software picks. All of this and so much more this week on Destination Linux.
When flying above a cityscape, we can't demand our wireless provider to build more base stations or ask the passersby to kindly refrain from watching cat videos on their phones and let our stream through. We can't fix the network, but maybe we can adapt to it.
Hwangsaeul, or H8L, a remote surveillance streaming solution, utilizes the capability of libsrt to collect statistics from open SRT sockets and by continuously analyzing the available data tries to detect potential connectivity issues. When a problem is diagnosed, a customizable logic may decide to change some parameters of the video encoding process, sacrificing quality to preserve smooth and steady streaming at lower bitrate.
Hitting Mesa 21.1 this morning is a scheduler implementation for Panfrost Gallium3D, the open-source Arm Mali graphics driver.
Lead Panfrost developer Alyssa Rosenzweig has been working to implement a scheduler in panfrost for the Arm Bifrost graphics code path. The scheduler has been in the works for a number of months and is passing the relevant conformance tests and has now been merged.
AMDVLK 2021.Q1.3 is out this morning as the latest snapshot of the official open-source AMD Radeon Vulkan driver for Linux systems that is derived from their shared platform driver sources.
AMDVLK 2021.Q1.3 is on the lighter side with AMDVLK 2021.Q1.2 having arrived just over one week ago.
Of the two listed driver changes, AMDVLK 2021.Q1.3 is rebuilt against the Vulkan API 1.2.168 headers.
The MSM Direct Rendering Manager driver originally developed as part of the Freedreno effort for open-source Qualcomm Adreno graphics on Linux while now supported by the likes of Google and Qualcomm's Code Aurora engineers has some notable changes in store for the next Linux kernel cycle.
New Adreno hardware support coming with Linux 5.12 is the A508, A509, and A512. The Adreno 508 is part of the Snapdragon 630 SoC, the mid-range Adreno 509 is found with the Snapdragon 636, and the Adreno 512 is what was found in the Snapdragon 660.
Intel PXP -- Protected Xe Path -- is a means of hardware-protected sessions for graphics clients on Gen12 / Xe Graphics. The support code for enabling PXP with their open-source Linux driver stack was updated this past week.
While it's still under a "request for comments" flag and too late for possibly seeing it come with the soon-to-open Linux 5.12 merge window, this Intel PXP functionality is moving along and will be important for Xe server GPUs in public cloud type deployments where protected sessions are desirable for better segregation between shared resources.
Ignore for a moment it’s a GNOME Terminal window on Ubuntu with the Yaru theme, it’s the contents of the window that’s alluring to me. That and the IBM Plex font showing it off so well.
In around 1988, the first “IBM Compatible” I owned was an Epson 8086 PC with a Monochrome Display Adapter (MDA). It had a mono screen which could only output text, no graphics.
In 1990, I had to upgrade to a Hercules Graphics Card if I wanted to see anything other than text and symbols from code page 437.
pam_usb is a PAM module that provides hardware authentication for Linux using ordinary USB flash drives, SD cards, MMC, etc.
Using this, you'll be able to login without a password, by simply connecting a USB stick or memory card to your computer. This USB authentication also works when running terminal commands that require superuser - you will not be prompted for a password when using sudo for example.
pam_usb works with any application supporting PAM, such as login managers (GDM, Lightdm, etc.), and su / sudo.
For authentication, pam_usb makes use of the USB flash drive / memory card serial number, model and vendor, as well as optional One Time Pads (OTP). When One Time Pads are enabled (this is enabled by default, but you can disable it), the public user pad file is stored on the USB / memory card in a hidden folder called .pamusb, while the private key is stored in a hidden folder with the same name, stored in the user home directory.
Update packages are essential for the system to protect the data because these packages have specific security patches. However, Ubuntu’s feature called Unattended Upgrades installs all of the latest security-related updates automatically.
Today we are looking at how to install Autodesk on a Chromebook, also known as Eagle, on a Chromebook. Please follow the video/audio guide as a tutorial where we explain the process step by step and use the commands below.
In the earlier tutorials for Wireshark, we have covered fundamental to advanced level topics. In this article, we will understand and cover a command-line interface for Wireshark, i.e., tshark. The terminal version of Wireshark supports similar options and is a lot useful when a Graphical User Interface (GUI) isn’t available.
Even though a graphical user interface is, theoretically, a lot easier to use, not all environments support it, especially server environments with only command-line options. Hence, at some point in time, as a network administrator or a security engineer, you will have to use a command-line interface. Important to note that tshark is sometimes used as a substitute for tcpdump. Even though both tools are almost equivalent in traffic capturing functionality, tshark is a lot more powerful.
Java is one of the most used programming languages. Due to its object-oriented nature, it is preferred by developers. Java can be used to develop Mobile, Desktop and Web-based applications. Java allows running java programs on many platforms with the help of JVM. JVM has a JRE or Java Run-time Environment that provides resources and class libraries to Java code for execution. JDK is only needed for developing Java applications.
Fedora is a Linux distribution that is sponsored by Red Hat. The best thing is that it is free and open source. It is also available for desktop, server, and IoT systems. It has a different desktop environment like KDE Plasma, XFCE, LXQT, etc.
MySQL is a database system that provides database services for storing and managing data. It is one of the popular open-source databases.
MySQL comes with the following commercial products:
MySQL Standard Edition MySQL Enterprise Edition MySQL Cluster Carrier Grade Edition
All these editions come with a price tag and are mostly suitable for commercial use. We will use the MySQL Community Edition, which is available for free usage under the GPL license for our this guide.
Elasticsearch’s cat API is very handy because it allows users to view information related to various Elasticsearch engine resources in Compact and Aligned Text (CAT).
This tutorial will show you how to use the _cat API to view information about shards in an Elasticsearch cluster, what node the replica is, the size it takes up the disk, and more.
An Elasticsearch shard is a unit that allows the Elasticsearch engine to distribute data in a cluster. In Elasticsearch, we say that a cluster is “balanced” when it contains an equal number of shards on every node without having a large concentration of shards on a single node. Depending on how you configure Elasticsearch, it automatically performs shards rebalancing in your cluster to improve performance.
Automatic shard rebalancing conforms to restrictions and rules like allocation filtering and forced awareness, leading to the most efficient and well-balanced cluster possible.
NOTE: Do not confuse shard reallocation, which is the process of finding and moving unassigned shards to the nodes in which they reside, with rebalancing. Rebalancing takes assigned shards and moves them evenly to various nodes, the purpose being the equal distribution of shards per node.
Elasticsearch indexing is an important feature that allows the engine to perform fast and accurately.
However, as you know, once data gets mapped into an index, it’s unmodifiable. To do this, you will need to reindex the data with the modifications you require. This process may lead to downtime, which is not a very good practice, especially for a service that is already in circulation.
To circumvent this, we can use index aliases, which allow us to switch between indices seamlessly.
Working with databases is very fun but can sometimes be challenging, especially when dealing with already-existing data.
For example, if you want to change the type of a specific field, it might require you to take the service down, which can have grave repercussions, especially in services that process large amounts of data.
Fortunately, we can use Elasticsearch’s powerful features such as Reindexing, ingest nodes, pipelines, and processors to make such tasks very easy.
This tutorial will show you how to change a field type in a specific index to another, using Elasticsearch Ingest nodes. Using this approach will eliminate downtime that affects services while still managing to perform the field type change tasks.
Users, privileges, and permissions are some of Elasticsearch’s primary security features. Security features allow you to secure your clusters and manage how users interact with the engine.
In this quick guide, we will examine how to enable Elasticsearch Xpack security features and how to use security API to create users and roles.
Mask of the Rose: a Fallen London romance is an upcoming romantic visual novel set in the same universe as Fallen London, Sunless Sea, and Sunless Skies. Considering their history you know it's going to be good, with deep writing and probably plenty of really weird characters to meet.
"Mask of the Rose begins in 1862, just months after London was stolen by bats and relocated to the Neath: a vast cavern far below the earth. Down here, the sun doesn't shine, and Parliament has sunk into the Thames. Queen Victoria never emerges from her palace. Cats spy on their owners and whisper their secrets abroad. And it's rapidly becoming clear that London isn't going to be returning to the Surface any time soon…"
The beta for the upcoming 5.21 release of the KWinFT projects is now available. It contains a monumental rewrite of KWinFT's windowing logic. Read on for an overview of the changes and why this rewrite was necessary.
A Confused Heart
Let's define first what windowing logic is. In my definition this means all structures and algorithms in code to decide where a window should be stacked, placed, moved or in which other ways its geometry can be manipulated to allow the user to interact with and organize the totality of all windows.
And if you agree to such windowing logic being of central importance for a windowing manager and what distinguishes it in the end from others, we may call it the heart of KWinFT.
The KWinFT compositor is based on KWin, KDE's official compositor for the Plasma Workspace. KWin was founded over two decades ago. Necessarily some of its code is very old, does not adhere to any modern development principles and sometimes, due to changes in other levels of the graphics stack, it is just plain wrong.
It is kind of unexpected though, that this has been in particular the case for the windowing logic, the heart of KWinFT. For example at the HEAD of KWin's current master branch do a git-blame over the ludicrous code in layers.cpp responsible for all window stacking and count how many lines are older than a decade.
But old code is not necessarily bad. The reason why this old code is bad, is two-fold: for one under the leadership of the former maintainer the Wayland support was shoehorned into an already complex code base and secondly he followed a strategy to keep the old code untouched as much as possible. Instead of doing necessary incremental refactors to the old code, he tried to firewall it with an abundance of tests.
For sure one can find reasons and excuses to pick such a strategy, but ultimately one has to say it failed. This can not be judged of course from the outside, but I feel comfortable in making this assessment as someone who knows the code in detail and because I am not the only one who abandoned his strategy.
KDE developer Roman Gilg continues pushing ahead with KWinFT as a fork of the KWin window manager / compositor and other select components. He spent a lot of time last year better optimizing the X11 and Wayland handling while he's been relentlessly working this year to push it even further.
Roman has released the KWinFT 5.21 Beta following what he describes as a "monumental rewrite" to the windowing logic as part of an overall "windowing revolution." For this windowing revolution Gilg has been working on flattening/simplifying the window/surface hierarchy, making the code cleaner and more comprehensible, and ultimately to improve the Wayland sub-surfaces support.
Autocrypt support is now in Kontact! This has been several weeks of work. Autocrypt makes it easier for you to use encrypted messages, as is handles key transfer for you automatically.
There are several parts involved in supporting Autocrypt. First, Autocrypt uses Protected Headers, implemented already. Within Autocrypt I found some issues and fixed them. Than I began implementing the receiving of Autocrypt messages. The key concept of Autocrypt is to always send the public key within each email, so the receivers are always able to answer encrypted. The first step was extraction of the key and saving it to disk. Because Autocrypt sends keys unverified at the moment, I decided to not import the Autocrypt keys into the users' keyrings, but keep them separately in json files under ~/.local/share/autocrypt.
In this video, we are looking at Debian 10.8.
Today we are looking at Debian 10.8. It comes with Linux Kernel 4.19, XFCE 4.12, and uses about 400-500 MB of ram when idling.
We have some exciting news to share regarding the consolidation of our web pages.
[...]
Both sites were offering similar functionality for downloading install media. Both sites had to be updated with every Alpha, Beta, or changes to media descriptions. The new reduced scope of software-o-o will be purely browsing of available software. The scope of get-o-o won’t change. It will be media downloads and pointers to relevant documentation such as installation or upgrade instructions. We believe that these changes will help to keep it small and simple.
We’re happy to reduce duplication of efforts while not introducing further fragmentation as get.opensuse.org has been around for quite some time already.
Red Hat Insights is a Software-as-a-Service (SaaS) product that helps administrators report on applicable errata and known configuration issues as well as proactively identify security issues. Insights makes you aware of potential service-impacting problems before they happen, letting you plan how to address them before there is an issue that might affect production. Access to Red Hat Insights is included with every Red Hat Enterprise Linux (RHEL) subscription, so there is nothing extra to buy. This article covers the basics of how to register with Red Hat Insights, how to use it, and a couple of examples to demonstrate its remediation capabilities.
Thunderbird 78 is being backported to Ubuntu 20.04 LTS — no PPAs, Snaps, or Flatpaks required!
Ubuntu 20.04 LTS shipped with Thunderbird 68.x but this version is no longer supported upstream. This leaves Ubuntu developers will a problem: backport individual security fixes to Thunderbird 68, or port the newer (and still-supported) Thunderbird 78 to LTS users?
The Ubuntu in the wild blog post ropes in the latest highlights about Ubuntu and Canonical around the world on a bi-weekly basis. It is a summary of all the things that made us feel proud to be part of this journey. What do you think of it?
Welcome to the Ubuntu Weekly Newsletter, Issue 669 for the week of January 31 – February 6, 2021. The full version of this issue is available here.
The web team at Canonical run two-week iterations building and maintaining all of Canonical websites and product web interfaces. Here are some of the highlights of our completed work from this iteration.
The embedded AI computer supports Windows 10/7 and Linux distributions, and can optionally wall-mounted via a mounting bracket. Vecow says the PC supports NVIDIA Tesla/Quadro/GeForce and AMD Radeon Graphics, as well as the latest NVIDIA RTX 30 series powered by Ampere architecture featuring DLSS AI acceleration up to max 10496 CUDA cores for expanded AI computing capability.
Conrad Barski (Lisperati) wanted a portable “workstation” to write in Lisp and see all those parentheses. Since there aren’t many devices with an ultra-wide display, he decided to build his own “Lisperati1000” ultra-compact Lisp programming workstation powered by a Raspberry Pi Zero W, and equipped with an ultra-wide 1920Ãâ480 8.8-inch display, a compact keyboard made of Cherry Brown switches, and a 4,400mAh dual battery all housed in a 3D printed enclosure.
Matthew Begg wanted a pocket computer that had some of the charm of his 1980s vintage Casio FX-730P, so he decided to build his own.
His prototype device uses an Arduino Nano to boot into BASIC, and features a 1.54ââ¬Â³ OLED display as well as a PCB-based QWERTY keyboard. Power is provided via a pair of AAA batteries, along with a boost converter. Most notably, however, the entire thing is meant to fit inside of an Altoids tin.
“Adding Open Hardware to Open Software for a More Equitable IoT” talk at FOSDEM 2021 discussed the importance of open-source hardware and software for IoT devices, notably to avoid getting a brick after the cloud service is suddenly terminated.
Adrian McEwen then specifically talked about his “My Baby’s Got LED” ESP8266 open-source hardware board powered by… a USB charger? nope. A battery? You’ve got to be kidding. Instead, the ESP8266 board is equipped with an ATX connector taking a standard power supply found in PC towers and desktops.
Jolla's Sailfish OS 4.0.1 was released this past week to early access subscribers as a major milestone for Sailfish OS 4.
Sailfish OS 4.0.1 "Koli" is available currently to early access users since Thursday. With Sailfish OS 4.0.1, Jolla Phone is no longer supported as their original smartphone ambition. Supported by Sailfish OS 4 remain the Jolla C, Jolla Tablet, and Sony Xperia 10 / XA2 models, Gemini PDA x25/x27, and other select devices.
Jolla Phone is not supported any more. OS release 3.4.0 was the last one for this device launched 7 years ago.
The lowest supported kernel version of Sailfish 4 in the remaining Sailfish OS devices is 3.10. It is in Jolla C, Jolla Tablet and Xperia X
The instructions for installing Sailfish OS to Sony Xperia X, Xperia XA2 and Xperia 10 devices are here - covering Windows, Linux, and macOS computers.
Read this, please, to learn about the Sailfish X licence.
The Apache Software Foundation (ASF), the all-volunteer developers, stewards, and incubators of more than 350 Open Source projects and initiatives, announced today Apache€® EChartsâ⢠as a Top-Level Project (TLP).
Apache ECharts is an intuitive, interactive, and powerful charting and visualization library ideally suited for commercial-grade presentations. The project originated in 2013 at Baidu and entered the Apache Incubator in January 2018.
[...]
The project has recently released ECharts 5, which provides rendering ability for tens of millions of data points, and supports accessibility requirements in compliance with W3C’s Web Accessibility Initiative Accessible Rich Internet Applications Suite (WAI-ARIA) standards.
Building on EChart’s core features, ECharts 5 makes it even easier for developers to tell the story behind the data through 15 new features and improvements in story-telling and data expression, optimized visualization and responsive design, interaction and performance enhancement, developer experience, internationalization, and more.
For the past 4 years I have participated to FOSDEM, a conference about free and open source software for developers. I love this event. It’s a welcome opportunity to see friends, watch great talks and drink excellent Belgium beer.
This year unfortunately it was a remote event. The event was all managed via matrix, a decentralized communication system. There were a few network issues at the beginning, with a pick of more than 11.000 people simultaneously, but in general it went pretty smoothly.
I participated mostly in the “community”, “open source design” and “web performance” rooms. Here is a little summary of what a saw. Hope there is stuff that might trigger your curiosity.
The next step in the recent PDFium-based signature verification story is my Handling PDF digital signatures in LibreOffice with PDFium talk at FOSDEM 2021, in the LibreOffice devroom (pre-recorded video). The talk gives you an overview of digital signing in general, all the ODF/OOXML/PDF handling, signing/verification, various other related past Collabora projects, and then goes into details regarding how PDFium was improved and is used to do a better PDF signature verification in LibreOffice when opening PDF files in Draw.
The virtual room had around 150 participants and the Matrix based online conference was well-organized. Speakers even got a free t-shirt before the event, I appreciated the "bring your own beer" joke :-)
An other benefit of this unusual setup was to avoid the dreaded room is full problems, where you carefully selected a talk to attend and then failed to hear it.
It's rare to hear of OpenOffice usage these days compared to LibreOffice, but the open-source office suite is still going ahead under its volunteer work at the Apache Software Foundation. This past weekend at FOSDEM 2021 was a status update on Apache OpenOffice.
Peter Kovacs provided a status update on Apache OpenOffice on the work and milestones over the past year. Compared to LibreOffice 7.0 in 2020 with Vulkan rendering support and many other new features, Apache OpenOffice just had a maintenance release. But even with OpenOffice not being in the limelight like it once was, it's still seeing over one million downloads per month.
The other day I was reading Firefox’s CookieService.cpp to figure out how Firefox determines its maximum cookie size (more on that one day, maybe) when the following comment (from 2002, according to blame) caught my eye:
The following test is part of the RFC2109 spec. Loosely speaking, it says that a site cannot set a cookie for a path that it is not on. See bug 155083. However this patch broke several sites -- nordea (bug 155768) and citibank (bug 156725). So this test has been disabled, unless we can evangelize these sites. Note 1: Anything having to do with broken websites is wont to catch my attention, especially olde bugs (let’s face it, in 2002 the internet was basically the High Middle Ages. Like yeah, we were killing it with the technological innovation on top of windmills and we’re getting pretty good at farming and what not, but it’s still the Middle Ages compared to today and kind of sucked).
Note 2: The two sites referenced in the Firefox comment are banks (see 155768 and 156725). And one of the axioms of web compatibility is that if you break a bank with some cool new API or non-security bug fix, game over, it’s getting reverted. And I’m pretty sure you can’t legally create test accounts for banks to run tests against and Silk Road got taken down by the feds.
Welcome back to WordPress 101 series. In this 4th part of the series, we’ll learn about WordPress plugins, the biggest reason behind WordPress’s massive usage on the Internet.
From creating a simple blog to launching an e-commerce store, WordPress does it all very well. It solves some of the most frustrating problems when starting a new online business.
Any business needs improvements. One may start a business website with a few products in the store. As the store sells more products, the website needs to be upgraded for better customer satisfaction. From launching a new customer forum to an entire professional customer support system, everything is extremely easy in WordPress.
A macro in C language is a piece of code which has been assigned a name. When the name is used anywhere in the program, the macro value is replaced before the program’s compilation. In this article, we will see in detail how to write a macro in C language.
There are three types of software errors that exist. These are Syntax Errors, Logic Errors, and Runtime Errors.
CV stands for Constant-Volatile. The declaration of an object that is not preceded by const and/or volatile is a cv-unqualified type. On the other hand, the declaration of an object that is preceded by const and/or volatile is a cv-qualified type. If an object is declared const, the value in its location cannot be changed. A volatile variable is a variable whose value is under the influence of the programmer, and hence cannot be changed by the compiler.Storage Class Specifiers refer to the life, place, and way in which a type exists. Storage class specifiers are static, mutable, thread_local, and extern.
This article explains C++ Qualifiers and Storage Class Specifiers. Thus, some preliminary knowledge in C++ comes in handy to really appreciate the article.
C++ does not allow a function that adds two integers and return an integer, to add two floats and return a float. Imagine that there is a function to add two integers and return an integer. Would it not be nice to have another function with the same name, that adds but two or even more floats to return a float? Doing so is said to be, overloading the first function. Arithmetic operators are typically used for arithmetic operations. Is it not nice to have the +, join two strings? Enabling that is said to be overloading the arithmetic addition operator, for strings.
The increment operator, ++ adds 1 to an int or a float. When dealing with pointers, it does not add 1 to the pointer. It makes the pointer point to the next consecutive object in memory. An iterator points to the next object in a linked-list, but the linked-list objects are in different places in memory (not in consecutive regions). Would it not be nice to overload the increment operator for an iterator, to increment but point to the following element, in the linked-list?
This article explains overloading in C++. It is divided into two parts: function overloading and operator overloading. Having already basic knowledge in C++ is necessary to understand the rest of the article.
At last month's Linux.Conf.Au virtual conference was a presentation by Google engineer Nick Desaulniers on the current state of building the Linux kernel with LLVM Clang as an alternative to GCC.
Over the past year the "ClangBuiltLinux" effort has continued maturing with more Linux kernel code issues resolved to improve the portability across compilers. The industry interest has been around using Clang to build the Linux kernel for reasons including ensuring better code portability / testing, making use of various LLVM/Clang functionality not offered currently by GCC, some vendors using Clang as their preferred code compiler for licensing or other reasons, and in the case of Google they have already been using Clang to build their Linux kernel for a while and have been working to upstream more of the support.
Whenever we work with textual strings, sooner or later the issue of case comes up. Does a word need to be fully uppercase, fully lowercase, with a capitalized letter at the start of the word or sentence, and so on.
An idiom is a natural language expression of a simple programming task. For example, in the sleep 10 command (which will pause the terminal one is working in for ten seconds), the word sleep is a natural language expression of what is a time based coding construct, developed in the Bash GNU coreutils software package.
There are a number of special variable-bound idioms (i.e. suffixes which can be added to a variable name, indicating what we would like to do with a given variable), which can be used in Bash to more easily do these types of conversions on the fly instead of having to use for example the Sed Stream Editor with a Regular Expression to do the same.
The newly formed Rust Foundation has announced its existence.
Mozilla has been sponsoring the Rust programming language for more than a decade while in 2020 as part of Mozilla's big round of layoffs most of the Rust team was let go along with dropping the Servo web engine team. Following that plans were drafted to create the Rust Foundation as an independent entity.
Today, on behalf of the Rust Core team, I’m excited to announce the Rust Foundation, a new independent non-profit organization to steward the Rust programming language and ecosystem, with a unique focus on supporting the set of maintainers that govern and develop the project. The Rust Foundation will hold its first board meeting tomorrow, February 9th, at 4pm CT. The board of directors is composed of 5 directors from our Founding member companies, AWS, Huawei, Google, Microsoft, and Mozilla, as well as 5 directors from project leadership, 2 representing the Core Team, as well as 3 project areas: Reliability, Quality, and Collaboration.
Istio 1.8.3 will not contain a security fix as previously announced on discuss.istio.io. There is no currently planned date at this time. Be assured that this is a top priority for the Istio Product Security Working Group, but due to the details we cannot release more information at this time. An announcement regarding the delay can be found here.
Chudik filed his patent application back in 2006. After receiving a final rejection back in 2010, Chudik filed a request for continued examination (RCE). At that point the examiner withdrew the prior rejection, but then rejected the claims on an alternative ground. Chukik appealed to the PTAB, but the Board did not get a chance to hear the case. Rather, the examiner again withdrew their rejection and re-opened prosecution with a new alternative ground for rejection. That appeal-withdraw-new-ground process happened again. Then it happened again.
Now we’re up to 2017. Chudik had filed four appeals in the same case but the PTAB with the examiner backing-down each time. Finally, on the fourth go-round, the examiner issued a notice of allowance after withdrawing the rejection. His patent: US 9,968,459. Good job Chudik. The patent covers a medical device used in shoulder surgery. This is the type of invention that – if its use becomes widespread – will use-up the whole 20-year patent term.