Shared posts

12 Feb 18:44

Bryan Murdock: My New Favorite Phone Game: termux

by Bryan
Tom Roche

lots of INTERESTING (though shallow and disconnected) datapoints about `termux`, which is (edited pullquote)
> Termux is a linux command-line environment for Android[, kinda like cygwin] or Terminal.app[. Termux is] almost linux[:] not quite[, but I've] been able to install emacs and python [and git.]

 A lot of people when bored pull out their phone and play games.  Games just don't do it for me for some reason.  I mean, I played chess for a while, and recently I tried Shoot Bubble and 5 Dice (generic Yahtzee), but for some reason I always forget I even have them available and I end up just scrolling Twitter :-/  My feed is pretty good, if someone gets overly political or negative (usually its a combination of the two) I block them, but stuff still leaks in.  Usually if Twitter is holding my attention for a long time it's because it's making me angry.  I don't like that.  I think I've found a better solution for when I'm bored and pull out my phone: termux.

Termux is a linux command-line environment for Android.  It's a kinda like wsl (or cygwin if you are old like me) or Terminal.app, but for your phone.  It's almost linux but not quite.  Normally I find that very frustrating, especially if I'm trying to get real work done (you may have seen my past blog posts here or here or here or here, for example), but I'm actually enjoying just playing with termux and seeing what it can do.  Apparently Frustration Games is a popular genre now (I'm old enough to remember when they were all Frustration Games), and I'm liking this one!

To be completely honest, I've actually been surprised at how not frustrating it is.  I'd say it's better than trying to get a linux-like environment on Windows or Mac, except for the minor detail that it's on a phone with a tiny screen and no physical keyboard.  I've actually been able to install emacs and python and write a very (very!) basic little SystemVerilog parser, and test it!  And use git to version it!  I'm kind of amazed.

Some things I've learned about termux:

  • The app store version is old and broken, get the apk from github and install that
  • You can use apt to install packages, but the built-in termux pkg command is more convenient (you can type pkg in instead of apt install, which makes a difference using your phone keyboard)
  • It has built-in scripts that do nice things:
    • termux-setup-storage to make it easy to access your files
    • termux-change-repo to easily pick a package repo or group of mirrors
    • termux-backup and termux-restore to backup and restore your environment
    • probably others I wish I knew
  • You can install dropbear for ssh because you are thinking this is a phone and slim simple dropbear would be efficient and cool, but dropbear doesn't support a ~/.ssh/config file
  • When you do pkg remove dropbear it removes dropbear and conveniently installs openssh in its place
  • I use gnu screen (not tmux. Again, I'm old) and I've changed the default ctrl-a to ctrl-j instead, but for some reason ctrl-j j is treated like ctrl-j ctrl-j on termux
  • Files are owned by root and I can't change that
  • I can't make a script executable, it seems.  Hmm, I wonder about a compiled binary?
  • The filesystem is pretty slow, something like git status takes a loooong time
  • Termux hard-codes the DNS server to be 8.8.8.8, it doesn't use whatever the rest of Android is using

I'm sure there's more that I'll come across, but I figured this was enough to fill out a blog post at this point.  If you are looking for a new activity for your phone, give termux a try.

12 Feb 18:38

CodersLegacy: Matplotlib Blitting Tutorial – Optimize your Plotting!

Tom Roche

pullquote:
> Blitting is a technique that takes a snapshot of the static parts of your graph, such as the background, any labels, static elements, and saves them. This allows you to update the dynamic parts of the graph without having to redraw the entire thing every time. [Blitting] significantly improves the performance of your graph updates. This can be especially helpful when you’re working with large datasets and need to update the graph frequently. Additionally, it’s a great way to create smooth and seamless animations, making your graph even more eye-catching and interactive.

If you are interested in learning about Blitting in Matplotlib, this tutorial is the perfect place for you!

Blitting is a term that’s used in computer graphics and refers to a technique that’s used to dramatically speed up the rendering of dynamic graphics. In matplotlib, blitting is a technique that’s used to make real-time updating of data much faster. This can be especially useful when you’re working with large amounts of data and want to update your graph on the fly.


What is Blitting?

Blitting is a technique that takes a snapshot of the static parts of your graph, such as the background, any labels, static elements, and saves them. This allows you to update the dynamic parts of the graph without having to redraw the entire thing every time.

So, what are the benefits of using blitting in matplotlib?

For starters, it significantly improves the performance of your graph updates. This can be especially helpful when you’re working with large datasets and need to update the graph frequently. Additionally, it’s a great way to create smooth and seamless animations, making your graph even more eye-catching and interactive.

We conducted a simple performance benchmark in this matplotlib tutorial using code without blitting, and with blitting. Here are the results.

With Blitting:      2.62 seconds

Without Blitting:   5.73 seconds

Pretty good right? Let’s find out how this was possible.


Matplotlib Blitting Tutorial

This tutorial will show you how to use the blitting technique in matplotlib to improve the performance of updating dynamic graphics. To illustrate this, the tutorial will show you how to generate a scatter plot and add new (randomly generated) data points to it in real-time.

First, we will write our code without the use of any blitting. This will give us a good reference point to begin with, and also help us get a better idea of our goal.

import matplotlib.pyplot as plt
import numpy as np

# Generate data
x = []
y = []

# make a new figure
fig, ax = plt.subplots()
scatter = ax.scatter(x, y)

plt.axis([0, 1, 0, 1])
plt.show(block=False)

for i in range(100):
    x = np.append(x, np.random.rand())
    y = np.append(y, np.random.rand())
    scatter.set_offsets(np.c_[x,y])
    fig.canvas.draw()
    fig.canvas.flush_events()

plt.show()

The above code generates the below scatterplot.

A scatter plot in matplotlib

Creating a Blitting Manager Class

Next, we will create a Class to encapsulate all of the blitting logic, and creating a scalable solution to managing multiple dynamic graphs. This is also the recommended approach according to the matplotlib team themselves. The best thing about using this approach, is that we can easily enable blitting in any code within 2-3 lines using this Class. The only downside is the extra time required to make the Class.

The below code is actually from the matplotlib documentation, with some minor changes.

class BlitManager:
    def __init__(self, canvas, animated_artists=()):
        self.canvas = canvas
        self._artists = []
        self._bg = None

        for a in animated_artists:
            self.add_artist(a)

        self.cid = canvas.mpl_connect("draw_event", self.on_draw)


    def on_draw(self, event):
        """Callback to register with 'draw_event'."""
        if event is not None:
            if event.canvas != self.canvas:
                raise RuntimeError
        self._bg = self.canvas.copy_from_bbox(self.canvas.figure.bbox)
        self._draw_animated()


    def _draw_animated(self):
        """Draw all of the animated artists."""
        fig = self.canvas.figure
        for a in self._artists:
            fig.draw_artist(a)


    def add_artist(self, art):
        """Add a new Artist object to the Blit Manager"""
        if art.figure != self.canvas.figure:
            raise RuntimeError
        art.set_animated(True)
        self._artists.append(art)


    def update(self):
        """Update the screen with animated artists."""
    
        if self._bg is None:
            self.on_draw(None)
        else:
            # restore the background
            self.canvas.restore_region(self._bg)
            # draw all of the animated artists
            self._draw_animated()
            # update the GUI state
            self.canvas.blit(self.canvas.figure.bbox)
        # let the GUI event loop process anything it has to do
        self.canvas.flush_events()

We will now proceed to begin explaining the above code, method by method. First up is the init method, created during the creation of a BlitManager object.


The __init__ method

The __init__ method is the constructor for the BlitManager class. It takes two arguments: canvas and animated_artists. The canvas argument is used to store the FigureCanvas instance on which the animated artists will be drawn. This can be obtained from any figure object, by accessing the .canvas attribute.

The animated_artists argument is an iterable of artists that will be drawn on the canvas. Only include the artists here which are meant to be changed during the execution of the program.

    def __init__(self, canvas, animated_artists=()):
        self.canvas = canvas
        self._artists = []
        self._bg = None

        for a in animated_artists:
            self.add_artist(a)

        self.cid = canvas.mpl_connect("draw_event", self.on_draw)

The _artists attribute is initialized as an empty list to store all the artists that will be added to the BlitManager. The _bg attribute is initialized as None and it will be used to store the background of the canvas.

The for loop iterates over the animated_artists and adds each of them to the BlitManager using the add_artist method.

Finally, we connect the “draw event” to the on_draw() method. The draw event occurs whenever an object os drawn to the canvas.


The add_artist() Method

The add_artist method is used to add a new artist object to the BlitManager. For those unfamiliar with the term “artist”, it refers to any object plotted to the window (like a line).

We have some validation in place over here to ensure that the figure which the artist belongs to, and the figure of the canvas are the same.

    def add_artist(self, art):
        """Add a new Artist object to the Blit Manager"""
        if art.figure != self.canvas.figure:
            raise RuntimeError
        art.set_animated(True)
        self._artists.append(art)

We also the set the animated property of the artist to True, before adding into the _artists list. If animated is True, then the artist will not be drawn when fig.draw() is called. Instead, it will only be drawn when you manually call draw_artist(). This is commonly done when using blitting.


The draw_animated() Method

    def _draw_animated(self):
        """Draw all of the animated artists."""
        fig = self.canvas.figure
        for a in self._artists:
            fig.draw_artist(a)

The _draw_animated method is used to draw all the artists stored in the _artists attribute of the BlitManager object. The method iterates over all the artists in _artists and calls the draw_artist method of the Figure instance with each artist as the argument.


The on_draw() Method

This is the callback function that will be called every time the draw_event is triggered. The first few lines are just normal error handling, but the second last line with the copy_from_bbox() method is important.

    def on_draw(self, event):
        """Callback to register with 'draw_event'."""
        if event is not None:
            if event.canvas != self.canvas:
                raise RuntimeError
        self._bg = self.canvas.copy_from_bbox(self.canvas.figure.bbox)
        self._draw_animated()

To understand the purpose of copy_from_bbox() we need to understand the concept of the “background” in blitting. Here are some diagrams to help us understand this concept.

Shown above is the current state of a graph, with 3 points. The red point is the point we wish to move to a different location. The yellow ones are static.

The below graph shows us the new position of the graph.

Without blitting, what would have happened is that the whole graph would have been cleared and redrawn to get the above output. But with blitting, we maintain a “background” which usually contains all the static elements in the canvas. It is important to keep in mind that the background and canvas data are actually just a buffer of RGBA pixels.

Whenever a new artist is added, or an existing artist is modified, the blit() function (to be shown later) compares the old background to the new changes, to identify which pixels have different. The pixels which have changed, are updated and redrawn to the screen. Those pixels which were not modified, are not drawn to the screen again.

To come back to the code from earlier, all we are doing is storing a background of the canvas before we make any changes.


The update() Method

Here is the main method of the BlitManager Class.

    def update(self):
        """Update the screen with animated artists."""
    
        if self._bg is None:
            self.on_draw(None)
        else:
            # restore the background
            self.canvas.restore_region(self._bg)
            # draw all of the animated artists
            self._draw_animated()
            # update the GUI state
            self.canvas.blit(self.canvas.figure.bbox)
        # let the GUI event loop process anything it has to do
        self.canvas.flush_events()

Here we can see the theory from earlier come into play. This function is called when we want to update the canvas/screen. First we restore the background to the canvas, then we draw the updated artists. Then the blit() method is called, which uses the comparing logic from earlier and redraws the necessary locations.


Finally, here is sample code from earlier, but with blitting logic included. The lines with blitting have been highlighted.

import matplotlib.pyplot as plt
import numpy as np
import time
from BlitManager import BlitManager  <---

# Generate data
x = []
y = []

x2 = np.random.rand(100)
y2 = np.random.rand(100)

# make a new figure
fig, ax = plt.subplots()
scatter = ax.scatter(x, y)

bm = BlitManager(fig.canvas, [scatter])  <---
plt.axis([0, 1, 0, 1])
plt.show(block=False)
plt.pause(.1)  <---


for i in range(100):
    x = np.append(x, np.random.rand())
    y = np.append(y, np.random.rand())
    scatter.set_offsets(np.c_[x,y])
    bm.update()  <---

plt.show()

We made one additional adjustment here, which we did not talk about earlier. We need used plt.pause(.1) which pauses the window for 0.1 seconds initially before we begin redrawing. This is necessary to allow caching of the window, which is needed by matplotlib.

Now try running this code yourself to see the magic!


When to use Blitting?

It is worth mentioning that if we had drawn all of points in the scatter plot at the same time, instead of one-by-one, then there is no point in using blitting. If this data is not meant to update or change in the future, and you only intend to draw it once, using blitting will not improve performance.

This is because blitting is designed to be used with dynamic, animated data that needs to be constantly updated on the screen, such as in a simulation or game.

It is also important to note that while blitting can improve performance, it may not always be the best option. For example, if the data you are working with is simple and straightforward, or if the updates are infrequent, then using blitting may not provide a noticeable improvement in performance. In these cases, it may be simpler and more straightforward to simply redraw the entire image from scratch.


This marks the end of the Matplotlib Blitting Tutorial. Any suggestions or contributions for CodersLegacy are more than welcome. Questions regarding the tutorial content can be asked in the comments section below.

The post Matplotlib Blitting Tutorial – Optimize your Plotting! appeared first on CodersLegacy.

12 Feb 05:33

NATO’s Fascist Inheritance & the Long War On the Third World, w/ Pawel Wargan

Tom Roche

EXCELLENT

To understand how this new Cold War might play out, we have to understand the foundations of the original Cold War of the 20th century. What was NATO’s role? What did it mean for the Third World back then? What does it mean for the Third World today, particularly those countries that seek an independent, sovereign path? What is the danger of rising fascist movements? And what are the lessons for anti-imperialists who live and organize in the imperial core? 

To discuss this and more, Rania Khalek was joined by Paweł Wargan, an organizer and researcher based in Berlin, the coordinator of the secretariat of the Progressive International and author of the recent Monthly Review article “NATO and the Long War on the Third World,” in which he looks to the past for lessons about the future, concluding that capitalism cannot be overcome until the arteries of imperial plunder are severed. 


12 Feb 00:56

Nicolas Martyanoff: Templating in Emacs with Tempo

by Nicolas Martyanoff
Tom Roche

nearly 30 years of using Emacs, and I never knew Emacs had built-in templating! that being said, [YASnippet](https://joaotavora.github.io/yasnippet/) still looks better

I have used text editors for more than 20 years; in all that time, I have never used a templating system to generate content because copy pasting and replacing always felt good enough. I recently decided to give it a try.

In Emacs it is hard to talk about templating without mentionning YASnippet. Developped by the prolific João Távora, who also developped Eglot, YASnippet lets you write templates as text documents.

But while I was researching the subject, I found out that Emacs already had two builtin templating modules: Skeleton and Tempo.

Tempo looked simpler, so I decided to give it a chance.

Using Tempo

Tempo templates are functions defined with tempo-define-template. The content to be inserted is a S-expression containing various kinds of elements which control the insertion process.

As an example, let us define a template to insert a HTML figure.

First we define a variable to store a list of templates. When using html-mode, we instruct Tempo to use it.

(defvar g-html-tempo-tags nil)

(defun g-init-html-tempo-templates ()
  (tempo-use-tag-list 'g-html-tempo-tags))

(add-hook 'html-mode-hook 'g-init-html-tempo-templates)

Then we define the template itself:

(tempo-define-template
 "g-html-figure"
 '("<figure>" n
   > "<img src=\"" (p "URI: ") "\">" n
   > "<figcaption>" (p "Caption: ") "</figcaption>" n
   "</figure>")
 "figure"
 "a figure containing an image and caption"
 'g-html-tempo-tags)

This form creates a function named tempo-template-g-html-figure. When it is called, Tempo processes elements of the template:

  • Strings are inserted in the buffer.
  • The n symbol causes the insertion of a new line character
  • The > symbol tells Emacs to indent the current line according to the rules of the major mode of the buffer.
  • The p forms cause Tempo to ask the user for values to insert. Note that you need to set tempo-interative to t.

Note that Tempo supports more elements; refer to the documentation string of tempo-define-template for more information.

The template is associated to the figure text tag which will be used for completion. We also add a description, and finally add the template to the g-html-tempo-tags list. Note that these three last arguments are optional.

Tag matching

Of course we do not have to call the template manually. When we call tempo-complete-tag, Tempo uses the string before the cursor to decide which template to insert. Open a HTML buffer, type figure and execute tempo-complete-tag (I bind it to M-S-<tab>): Tempo will automatically insert our template.

Tempo will handle the case where there is partial match for multiple templates and will spawn a completion buffer.

Now it would make sense to use <figure> as tag. To do so, update the g-init-html-tempo-templates function to set the local variable that Tempo uses to detect a tag:

(setq tempo-match-finder "\\(<[a-z]+>\\)\\=")

Doing so will use HTML tags as Tempo tags. We can then alter the call to tempo-define-template to use <figure> as tag, and from now on use it for template insertion.

Of course this means we can customize it to allow different formats of Tempo tags depending on the major mode we are in. Handy.

Writing a template selector

Calling template functions manually is unpractical and tag completion requires remembering which tags have been defined. My interface of choice would be a simple key spawning an incremental completion buffer (Helm in my case) to let me select a template to insert.

As it turns out, it is not that hard:

(defun g-insert-tempo-template ()
  (interactive)
  (let* ((tags-data
          (mapcar (lambda (entry)
                    (let ((function (cdr entry)))
                      (list function (documentation function))))
                  (tempo-build-collection)))
         (completion-extra-properties
          `(:annotation-function
            (lambda (string)
              (let* ((data (alist-get string minibuffer-completion-table
                                      nil nil #'string=))
                     (description (car data)))
                (format "  %s" description)))))
         (function-name (completing-read "Template: " tags-data))
         (function (intern function-name)))
    (funcall function)))

As we have already seen in a previous post, completing-read is quite limited in terms of presentation. I will probably spend some time switching from Helm to a mix of Vertico and Marginalia which apparently offers more options.

This will do the job in the mean time.

Conclusion

Tempo is reasonably satisfying. While it is a very simple module, it lets me define templates as Emacs Lisp expressions, associate them to tags and store them in tag lists which can be used in the major modes of my choice.

I do not expect to start using dozens of tiny templates for the simplest constructions, but Tempo is going to help with recurrent complex constructions such as Emacs module skeletons or Common Lisp system definitions.

11 Feb 23:32

Nord Stream Pipeline & Sabotaging Peace W Jeffrey Sachs (Live)

Tom Roche

Sachs VERY EXCELLENT as (recent) usual (perhaps making up for his/HIID's crimes against Russia in the 1990s?) on NATO's proxy war and its sockpuppeting of Ukraine

Nord Stream Pipeline & Sabotaging Peace W Jeffrey Sachs (Live)
11 Feb 19:31

Propaganda in the Ukrainian Proxy-War, w/ Noam Chomsky, Alexander Mercouris and Glenn Diesen

Tom Roche

Chomsky ('NC' below) VERY EXCELLENT as usual. Interview is mostly him and Diesen (fortunately not much Mercouris--2 short questions). Following mostly chronological, though discussion does quite often {skip between, stop then reenter} topics:

* Russian invasion of Ukraine (RUW) as provoked but unjustified and criminal: Russian security interests clearly violated by US-NATO
----* NATO-aligned corporate-funded media (CFM) maintains message hegemony ('every reference') on claims that Russian invasion 'is unprovoked'
----* ... but then NC claims that "provoked doesn't mean justified," which seems quite hairsplitty
* US-NATO escalation (and NATO CFM escalatory rhetoric) threatens to provoke nuclear war
----* US military (at least rhetorically) as 'bounding' US and CFM/deepstate escalation
----* UK even more provocative/escalatory than US
* 'US is gaining enormously from the [RUW]'
----* deindustrializing Europe
----* NC claims (probably false) major Russian military losses from RUW, while acknowledging minor economic losses
----* "[Russian invasion] drove Europe into Washington's pocket," beating EU (feeble) independence moves going back to de Gaulle
--------* ... though virtually all nations apart from (NC lists, incompletely) US, UK, EU are maintaining neutrality, esp WRT US sanctions
* US and UK terminate all attempts to negotiate end to RUW (e.g., Minsk, Israel, Turkiye)
----* NC states Merkel and Hollande claims (that Minsk/Normandy talks (2014-2022) were deliberate stalls) are "not credible, they're almost certainly lying"
* NATO CFM 'sophisticated propaganda'
----* 'do a Google search' and "try to [get search results] on unprovoked [US] invasion of Iraq"
----* "the reason [why NATO CFM consistently insist on] calling [RUW] the unprovoked invasion is [they] know perfectly well that it was provoked" (i.e., the old Big Lie technique)
--------* "there are extensive [US-NATO] provocations [of Russia] going back to the 1990s"
----* 26 Sep 2023 Nord Stream bombing obviously not Russian, but immediately and consistently blamed on Russia, until ...
--------* "There was a spate of articles in the press recently [early Feb 2023] saying there's now some skepticism about whether Russia sabotaged [the Nord Stream pipelines]. That's brilliant propaganda--the idea that Russia sabotaged the pipeline is outlandish [...] but to show how free and open we are, we even allow some skepticism about this idiotic idea."
--------* NC calls this the 'Thief, Thief!' technique
--------* NC predicts the new [Seymour Hersh reporting](https://seymourhersh.substack.com/p/how-america-took-out-the-nord-stream) how US and Norway deepstates bombed Nord Stream (archived, e.g., [here](https://archive.today/https://seymourhersh.substack.com/p/how-america-took-out-the-nord-stream) and [here](http://web.archive.org/web/20230208150721/https://seymourhersh.substack.com/p/how-america-took-out-the-nord-stream)) will be denounced by NATO CFM
----* 'six words' from Modi in generally-adulatory joint press conference with Putin (Samarkand 16 Sep 2022) twisted by NATO CFM into claim that India is splitting with Russia
----* NC claims the general trend of (my translation here) the product of {quantity, quality, mass susceptibility} of empire (US, NATO, 5 Eyes, Japan, etc) elite propaganda is declining:
--------* "it's weaker than in the past" (e.g. 1960s, 1970s) 'we forget how incredibly awful it was then' esp Vietnam War (VW) ... but then NC correctly points out that
------------* VW "was the worst crime after [WW2], pure aggression,' but 'to this day, in the mainstream [CFM], you cannot call it a crime of aggression--all you can say is, it was a mistake, we didn't use our power wisely. [... USCFM discussion of VW in 2023] is framed as a defense of South Vietnam"
------------* regarding the 2003-present US invasion of Iraq: in NATO CFM, 'the most critical comment you can make about the Iraq War is, it was a mistake.'
------------* US deepstate and CFM treatment of the 1988 USS Vincennes shootdown of Iran Air Flight 655, compared to allegations of Putin's responsibility for 2014 Malaysia Airlines Flight 17 shootdown
--------* 'somewhat more critical discussion now than there was in the past in the mainstream'
* potential for RUW 'negotiated settlement'
----* Minsk agreements 'obvious' settlement terms
--------* neutral Ukraine à la Cold War Austria and Finland
--------* {federation with, autonomy for} Donbas
--------* Crimea implicitly ceded to Russia (not NC's terms, but definitely implied)
--------* Zelensky agreed to 3 points above in Mar 2022 negotiations (Turkiye supervised, then BoJo ordered Z "back on the reservation"--my terms, not NC's)
--------* "Western security guarantees" for Ukraine
----* Merkel and Hollande claims to have fraudulently stalled Russia to arm/train Armed Forces of Ukraine (AFU) "not credible. they're almost certainly lying [to avoid charges of] Putin-loving"
* NATO 'doublethink': deepstate and CFM (esp Finland and Sweden=F+S) simultaneously claim
----* that Russia has in RUW 'proven its weakness' by failing to immediately steamroll AFU: 'it's wonderful, look how weak they are'
----* Russian military (AFRF) 'is about to conquer the West', 'the Russian monster, which is about to conquer everything
* Sweden and Finland
----* F+S face no military threat from Russia 'and they know it'
----* F+S 'have already been pretty much incorporated into NATO, not formally but in practice' (i.e., exercises (NC notes), operations (ditto), interoperability (I note))
----* F+S deepstate/CFM claims (vs previous points) 'are pretty effective propaganda' ~"much of their population probably believes this"
* prior US propaganda/lies
----* Declaration of Independence re {England, George III}: 'he unleashed against us the merciless Indian savages'
----* "all imperial powers [particularly England, France, Spain] are angelic [but] under attack by barbarians; that's just standard fare"
* US objectives vs PRC
----* USAF General Minihan predicts US-PRC war 'in 2025' (quoting Minihan)
--------* 'you can't have a war with an advanced nuclear state' (i.e., it's irresponsible because nuclear war will inevitably result)
----* NC cites Paul Keating (Australia PM 1991-1996) 'recent article' debunking 'the China threat', 'drew the obvious conclusion: the China threat is, China is there and it refuses to follow US orders' unlike Europe
--------* IR as mafia conflict: 'international affairs is pretty much like the mafia. The godfather does not accept disobedience; it's too dangerous'

Propaganda in the Ukrainian Proxy-War, w/ Noam Chomsky, Alexander Mercouris and Glenn Diesen
11 Feb 18:24

Week in Review: Omar Ousted, AOC’s Oscar-Worthy Performance, CJR's Russiagate Fallout, & More | SYSTEM UPDATE #34

Tom Roche

VERY EXCELLENT, not just on AOC, Ilhan Omar, and Russiagate, but also
* US politics more generally, particularly "identity" and the ongoing Zionist project to conflate opposition to Israel with antisemitism
* USCFM continuing spiral from journalism to public relations
* US-led empire and deepstate wants war with Russia *and* PRC

Week in Review with Glenn Greenwald: Omar Ousted, AOC’s Oscar-Worthy Performance, CJR&apos;s Russiagate Fallout, & More

10 Feb 22:13

The News Quiz – 13th January

Tom Roche

consistently funny, better than last week

Andy Zaltzman is joined by Lucy Porter, Mark Steel, Ayesha Hazarika and Ian Smith. This week they discuss ongoing strike action, the Labour Party's political transactions and a royal family fraction.

Hosted and written by Andy Zaltzman with additional material from Alice Fraser, Mike Shephard, Aidan Fitzmaurice and Jade Gebbie.

Producer: Georgia Keating Executive Producer: Pete Strauss Production Co-ordinator: Becky Carewe-Jeffries Sound Editor: Marc Willcox

A BBC Studios Production

10 Feb 21:14

705 - Turd of the Union (2/9/23)

Tom Roche

amusing, just bant

Review of the State of the Union and recent media hits from Trump, DeSantis, and Huckabee-Sanders. IRL Airborn Toxic Event. The Catturds guard the Bird Site. The Taliban become PMC. Get bonus content on Patreon

Hosted on Acast. See acast.com/privacy for more information.

10 Feb 21:12

2/10/23 Weekly Roundup: Krystal Responds to Rogan Controversy, State of the Union Reactions, Jeff Bezos Washington Commanders, Ohio Train Disaster

Tom Roche

skip everything between EXCELLENT 1st and last segments:
+ (starts after initial ad, ends 15:01) Krystal and Saagar respond to Zionofascists (esp Josh Gottheimer) regarding the latter's libel (old, fake, Zionofascist line that criticizing the political and economic power of US Zionism is by definition antisemitic) of K&S discussion with Joe Rogan (on JRE 4 Feb 2023). Suffice to say, K&S do /not/ back down, and instead rise up, which is the appropriate response to the Zionist libel.
+ (starts 74:11, to end of audio) Julia Rock @ The Lever on how the recent (3 Feb 2023) train derailment in East Palestine, OH (and the resulting mass release of air and water toxics) is probably connected to the successful suppression (by railroad lobbyists) of attempts under both CorpDems and Corporate Republicans to improve rail safety, and particularly of attempts to force railroads to upgrade ancient (literally Civil-War-era) braking systems.

In this Weekly Roundup, Krystal and Saagar respond to Rep Josh Gottheimer and other critics of a segment on Ilhan Omar and Antisemitism during the Joe Rogan podcast, Post reactions to the State of the Union with guests Kyle, Marshall, Ryan, and Emily, and an interview from The Lever's Julia Rock (@jul1arock) joins us to talk about the Ohio train derailment disaster that's causing devastating damage and currently swept under the rug by most of mainstream media.

To become a Breaking Points Premium Member and watch/listen to the show uncut and 1 hour early visit: https://breakingpoints.supercast.com/



To listen to Breaking Points as a podcast, check them out on Apple and Spotify



Apple: https://podcasts.apple.com/us/podcast/breaking-points-with-krystal-and-saagar/id1570045623

 


Spotify: https://open.spotify.com/show/4Kbsy61zJSzPxNZZ3PKbXl

 



Merch: https://breaking-points.myshopify.com/

Learn more about your ad choices. Visit megaphone.fm/adchoices

10 Feb 18:51

A inside peek at jokes that DON’T make it on television! Family – to have or not to have.

Tom Roche

1st comic/segment Cathy Boyd is amusing lowkey old-lady humor (i.e., /about/ being an old lady, not humor /for/ old ladies). 2nd comic/segment ... let's just say, you've got better ways to spend ~15 min of your life, so bail the audio @ 13:50

From the 905 Comedy Festival, Cathy Boyd takes some serious digs at some very serious protestors, and Laura Leibow has watched so much scripted reality that she could be writing those scripts herself!
10 Feb 00:31

Lobbyists Mingle With Congress Under the Banner of Celebrating Diversity

by Lee Fang
Tom Roche

in case you were wondering about why 'identity politics' is bad, just remember that it has been thoroughly weaponized to serve corporate ends. (and that's just in the US--the UK Tories are /totally/ 'diversified'.) pullquote:
> Ferox Strategies stands out as one of an emerging set of influence agents that have exploited the appetite for virtue signaling around diversity to push policies benefiting their clients. [...] “Ferox clients Walmart, Alexion, and Waste Management joined a who’s who of corporate sponsors to generously celebrate the most diverse Congress ever,” the message noted. The invitation for the event included the LGBT Congressional Staff Association, the Black Women’s Congressional Alliance, the Congressional Asian Pacific American Staff Association, and other identity-based professional societies for Capitol Hill staff. The largest race-based congressional caucuses each have sister nonprofit groups that are funded and led by corporate lobbyists. The advisory board to the CHCI, for instance, features representatives from JPMorgan Chase & Co., Mastercard, Exxon Mobil, Apple, Airbnb, DaVita, Toyota, Reynolds American, Microsoft, and New York Life Insurance, among other interests.

Cristina Antelo, a corporate lobbyist known for her reach within the Democratic Party, held court last month at a gala where her clients and other lobbyists rubbed shoulders with lawmakers and congressional staff.

Such a scene would be familiar to anyone who has spent significant time on Capitol Hill. Lobbyists host parties and fundraisers on a nightly basis in order to forge connections with policymakers, gather political intelligence, and nudge politicians into actions that benefit their clients.

But this time, the influence effort was branded as a righteous celebration of racial progress, exploiting the cultural emphasis of liberal institutions to lobby on issues that have nothing to do with increasing diversity.

It was a “night to welcome and celebrate diversity in the 118th Congress.” The event was titled #DiversityAcrosstheAisle, featuring a dozen sitting members of Congress and many staff members. The lobbying shop, Ferox Strategies, currently represents a range of interests, including Walmart, Reynolds American, and Eli Lilly and Company.

In one photograph from the event, Irene Bueno, a lobbyist for Pfizer and Comcast, huddles with staffers to House Minority Leader Hakeem Jeffries, D-N.Y.; Rep. Doris Matsui, D-Calif.; and Sen. Brian Schatz, D-Hawaii. In another picture, Tiffani Williams, a vice president for the Daschle Group, along with Lisa Feng of Alexion Pharmaceuticals, both grin alongside a large group of other congressional staff members to senior Democratic lawmakers.

Bueno has a lobbying agenda that is focused on business interests. Her disclosures show her lobbying largely on behalf of pharmaceutical interests on intellectual property, data exclusivity, and government reimbursement policies.


Antelo’s firm is a fairly traditional lobbying firm in many respects. In 2019, The Intercept reported on hacked emails from a surveillance company called Perceptics. The emails showed how Ferox Strategies had worked with tough-on-immigration Republican lawmakers to insert provisions into legislation that would have enabled its client to win contracts for reading the license plates of vehicles crossing the U.S.-Mexico border.

Ferox Strategies stands out as one of an emerging set of influence agents that have exploited the appetite for virtue signaling around diversity to push policies benefiting their clients.

The firm often flaunts its access to identity-based organizations in Congress to leverage client relationships. Ferox Strategies helped Diageo, the distilled spirits giant, contact legislators using access to the Congressional Black Caucus and the Congressional Hispanic Caucus “regarding production facilities in the U.S. Virgin Islands.”

Antelo, the former interim president of the Congressional Hispanic Caucus Institute, or CHCI, the nonprofit arm of the congressional caucus, is a member of the 2044 Council, an organization dedicated to increasing staff diversity in the Senate.

In a message to clients sent after the event, Ferox bragged about using the diversity as a way to ingratiate its corporate clients with Democratic leaders.

“Ferox clients Walmart, Alexion, and Waste Management joined a who’s who of corporate sponsors to generously celebrate the most diverse Congress ever,” the message noted. The invitation for the event included the LGBT Congressional Staff Association, the Black Women’s Congressional Alliance, the Congressional Asian Pacific American Staff Association, and other identity-based professional societies for Capitol Hill staff.

The largest race-based congressional caucuses each have sister nonprofit groups that are funded and led by corporate lobbyists. The advisory board to the CHCI, for instance, features representatives from JPMorgan Chase & Co., Mastercard, Exxon Mobil, Apple, Airbnb, DaVita, Toyota, Reynolds American, Microsoft, and New York Life Insurance, among other interests.

Last month at the Anthem, a Washington, D.C., nightclub, Secretary of the Department of Health and Human Services Xavier Becerra appeared with the Congressional Hispanic Caucus to swear in its first-year class of nine new members. The event featured live music and a message from Jeffries.

But before Becerra could administer the oath, Marco Davis, the president of the CHCI, paused the program to thank the sponsors of the swearing-in ceremony, including Genentech, Google, Amgen, Walgreens, and Target. He then handed the microphone to Omar Vargas, the head lobbyist for General Motors.

Lobbying disclosures show Vargas has focused on influencing Congress on tax credits, emissions standards, and recycling issues, among other policies important to GM’s bottom line. The company did not disclose any lobbying on issues related to diversity. But at the swearing-in ceremony, Vargas hit the right theme for the occasion.

“To be very honest with you tonight,” said Vargas, “General Motors and I are personally extremely committed to diversity in the public policy profession.”

The post Lobbyists Mingle With Congress Under the Banner of Celebrating Diversity appeared first on The Intercept.

09 Feb 19:41

US blew up Nord Stream pipelines connecting Russia to Germany, journalist Seymour Hersh reports

Tom Roche

VERY EXCELLENT--not so much a deepdive into [the Hersh report](https://seymourhersh.substack.com/p/how-america-took-out-the-nord-stream) (extensively archived [here](https://archive.today/https://seymourhersh.substack.com/p/how-america-took-out-the-nord-stream)) but gives it more context (much more than, say, the 9 Feb 2023 Breaking Points)

Pulitzer Prize-winning journalist Seymour Hersh reported the US government destroyed the Nord Stream pipelines that delivered Russian gas to Germany. The Biden administration approved the CIA operation, which used explosives and Navy divers, with help from NATO member Norway. VIDEO: https://youtube.com/watch?v=bZ5VLdqac-0 Read Seymour Hersh's article: https://seymourhersh.substack.com/p/how-america-took-out-the-nord-stream Sources and more information here: https://geopoliticaleconomy.com/2023/02/08/us-nord-stream-pipelines-seymour-hersh Our report from back in October - "Who sabotaged Nord Stream pipelines? US boasts ‘tremendous opportunity’ to weaken Russia. CIA knew": https://geopoliticaleconomy.com/2022/10/06/sabotage-nord-stream-pipelines-us-russia-cia US now world’s top LNG exporter, as Europe boycotts cheaper Russian gas: https://geopoliticaleconomy.com/2023/01/04/us-lng-exporter-europe-russia-gas
08 Feb 19:00

“A serial killer of civilisations”: a history of climate change

Tom Roche

excellent, but
* mostly about US politics c1979-2022 (inc esp-good segment on CFC-ozone politics c1970-1987)
* necessarily shallow given ~27-min (minus pre and post ads) runtime

From the Justinian plague to the fall of the Maya, climate change has been connected to many of history’s great catastrophes. Environmental journalist Eugene Linden speaks to Rhiannon Davies about the longer history of our relationship with the environment, and how the situation has snowballed since 1979.


(Ad) Eugene Linden is the author of Fire and Flood: A People's History of Climate Change, from 1979 to the Present (Penguin, 2022). Buy it now from Waterstones:

https://go.skimresources.com?id=71026X1535947&xcust=historyextra-social-histboty&xs=1&url=https%3A%2F%2Fwww.waterstones.com%2Fbook%2Ffire-and-flood%2Feugene-linden%2F9780241565551


Hosted on Acast. See acast.com/privacy for more information.

Learn more about your ad choices. Visit podcastchoices.com/adchoices

08 Feb 14:36

World War Civ 11: The Morocco Crisis of 1905

Tom Roche

not just the crisis, it's Morocco and Maghreb history ~1830-1905

France’s incremental takeover of Morocco based on their colonization of Algeria; Germany declares that it will protect Morocco’s sovereignty, which it doesn’t actually do. See how Morocco’s colonization became another cause of World War 1. Also listen to Dave’s mic improve in the last half hour! 
07 Feb 20:14

UNLOCKED: Gladio Radio 2: Greece, the Forbidden Balkan w/Pod Damn America

by The Späti Boys
Tom Roche

EXCELLENT CS/PDA dive into Greek history from c1918 through civil war (which starts 1943, contrary to most references)

07 Feb 18:06

704 - Time for Some Game Theory feat. Bomani Jones (2/6/23)

Tom Roche

Jones interviewed by Will, followed by just bant: not great Chapo, but definitely listenable

We’re joined by Bomani Jones, host of Game Theory on HBO, to discuss pro-sports and labor, including NFL player health in the wake of Damar Hamlin’s recent hospitalization, and NBA player bargaining power. We also briefly touch on the rapid rise of sports gambling and of course, who we’ve got for this Sunday’s Big Game.


Then, the boys are all together in LA this week and catch up on the Chinese Balloon, Kamala Harris, the Grammys, our favorite unfinished TV commercial storylines, the Book of Job, and more.  


Follow Bomani at @Bomani_Jones and watch Game Theory with Bomani Jones Friday's at 11pm on HBO and HBO Max.



Get bonus content on Patreon

Hosted on Acast. See acast.com/privacy for more information.

07 Feb 01:45

The Washington Post Wants to Cut Social Security and Medicare (Yeah, What Else is New?)

by Dean Baker
Tom Roche

Baker is EXCELLENT as usual, e.g., pullquote (lightly edited):
> [Another] bizarre aspect of [[this WaPo editorial](https://www.washingtonpost.com/opinions/2023/02/05/social-security-medicare-entitlements-reform/) (archived [here](https://archive.today/5Vm4Y))] is [its call] for raising the age for Medicare eligibility to 67 from 65. [This] would have little effect on the [US federal] budget, since it [would merely shift healthcare spending to] the ACA exchanges[, probably] increasing healthcare costs in the country overall. Medicare is far more efficient than private sector insurers, so forcing people to get insurance through the private sector would likely mean higher total US healthcare expenses[.]

For the 43,578th time, the Washington Post called for cuts to Social Security and Medicare. While the paper rejects Republican efforts to use the debt-ceiling hostage-taking route, it tells readers:

Yet the discussion [about the programs’ finances] needs to happen sometime, and sooner rather than later. These entitlements — which already account for about a third of federal spending — remain on unsustainable trajectories, and protecting them for future generations is too important to keep reform off the table indefinitely.

I’ll make a few quick points here. First, as Social Security is now financed, through a payroll tax, there is a problem. The Social Security trust fund is projected to be unable to pay full benefits in a bit more than a decade.

But it is important to note that this is primarily an accounting issue. We have already seen most of the rise in benefits associated with the retirement of the baby boom generation. There will be further increases in costs, but we’ve seen roughly two-thirds of the projected rise already, which has not devastated the economy.

The second point is that the Washington Post editorial board is apparently unable to get access to current economic debates, being isolated in downtown Washington, DC. Contrary to what had been the conventional wisdom two or three decades ago, the problem with an aging population is not too much demand, but rather too little.

With a stagnant or declining labor force, companies invest less. This puts a drag on demand. The result is a story like what we have seen in Japan, with an economy with low-interest rates and low inflation coupled with weak growth. (Some guy named Larry Summers talked about this a few years ago in a piece on “secular stagnation.”)  

While some deficit hawks make a big deal about Japan’s debt as a horror story that could face the U.S. in the future, the interest burden on this debt comes to roughly 0.3 percent of Japan’s GDP. That compares to a burden of 1.7 percent in the United States at present. Our burden was around 3.5 percent in the 1990s, which by the way was a decade of strong growth and rising living standards.

The other bizarre aspect of the Post’s editorial is that it indicates zero knowledge of the Medicare program. It calls for raising the age for Medicare eligibility to 67 from 65.

As people who follow policy have long known, this would have little effect on the budget, since it would raise the amount spent on providing insurance in the ACA exchanges. It could also end up increasing health care costs in the country overall. Medicare is far more efficient than private sector insurers, so forcing people to get insurance through the private sector would likely mean higher healthcare expenses for the country as a whole.

The other part of the story is that the Washington Post’s editorial writers apparently can’t be bothered to look at the Medicare Trustees’ reports. The program’s projected costs have actually plummeted in the last 15 years.

If we go back to the 2009 report, the program was projected to face a shortfall of 1.2 percent of GDP in 2030 and 2.33 percent of GDP in 2050. (That would be $300 billion and $600 billion in today’s economy.) In the most recent Trustees report the projected shortfall for 2030 is 0.21 percent of GDP and for 2050 it’s 0.41 percent of GDP.

This is a huge improvement. It is likely in part due to reforms made with the Affordable Care Act, as well as other changes in the healthcare system. It seems likely that the projections will improve further with the 2023 report, as healthcare spending has actually been falling as a share of GDP since the pandemic.

In any case, much has been done to improve the program’s finances in contrast to what is implied in the Post’s editorial. The key is reducing the costs of our healthcare system as a whole. This means less money going to drug companies, medical equipment suppliers, insurance companies, doctors, and others in the industry. Apparently, the Post does not want to have that conversation, it is more interested in cutting benefits for retirees.

The post The Washington Post Wants to Cut Social Security and Medicare (Yeah, What Else is New?) appeared first on Center for Economic and Policy Research.

06 Feb 21:00

2/6/23: Chinese Spy Balloon Shot Down, Biden vs Trump 2024, Trump Refuses To Endorse GOP Primary, Biden Rigs Dem Primary, Krystal and Saagar on Joe Rogan, History of Spy Balloons, Adani Corporate Scam

Tom Roche

Entirely skippable /except/ for last segment == Krystal's radar 75:09-82:25 on
* US short-seller [Hindenburg Research calls fraud on Adani Group](https://www.zerohedge.com/markets/adani-wipe-out-hits-68-billion-fight-short-seller-hindenburg-intensifies) (archived [here](http://web.archive.org/web/20230202155640/https://www.zerohedge.com/markets/adani-wipe-out-hits-68-billion-fight-short-seller-hindenburg-intensifies))
* importance of Adani Group to Indian economy
* pullquotes:
> [Gautam Adani's] rise was intertwined with the rise of Prime Minister Modi.
and
> Yet another illustration of how easy it is, apparently, to pull the wool over the eyes of supposedly most brilliant, sophisiticated people in the world. A scam economy with a massive global reach.

To become a Breaking Points Premium Member and watch/listen to the show uncut and 1 hour early visit: https://breakingpoints.supercast.com/

Krystal and Saagar discuss the Chinese Spy Balloon shot down by the Biden admin after days of it floating over the country, the seemingly inevitable rematch between Biden and Trump begins to take shape, Pete Buttigieg bristles when asked about Biden's re election polling, Trump refuses to endorse the winner of the GOP Primary, Biden attempting to rig the Dem primary by moving the first state from Iowa to South Carolina, excerpts from Krystal and Saagar on Joe Rogan where they chat about Men's struggles, Stock Ban, and Cable packages propping up Mainstream Media. Saagar looks into the history of Spy Balloons and Krystal looks into Gautum Adani, the richest billionaire in Asia and potentially the largest Corporate Scammer of all time. 


To listen to Breaking Points as a podcast, check them out on Apple and Spotify



Apple: https://podcasts.apple.com/us/podcast/breaking-points-with-krystal-and-saagar/id1570045623

 


Spotify: https://open.spotify.com/show/4Kbsy61zJSzPxNZZ3PKbXl

 


Merch: https://breaking-points.myshopify.com/

Learn more about your ad choices. Visit megaphone.fm/adchoices

05 Feb 20:52

Irreal: A Better Dired Listing

by jcs

Sooner or later almost every Emacs user discovers Dired and becomes a dedicated—or even fanatical—user. It’s basically a file manager but embedded within Emacs. As I’ve mentioned before, I tend to be an old-timey sort of guy so my natural inclination is to do my file manipulations on the command line just as I have for years but even I am a Dired convert and do essentially all my file work with it.

Nicolas Martyanoff is pretty much the same but he has a problem with the default listing. His complaint is that there’s a lot of unnecessary information, often formatted in an inconvenient way. That would be a minor annoyance except that it often causes the (arguably) most important datum, the file name, to wrap and be difficult to read.

Fortunately, Dired is reasonably configurable by setting various variables. Martyanoff took advantage of this to produce a nicer Dired listing. The dates are all in ISO format and file sizes are given in bytes rather than the generally useless number of file blocks. The resulting listing is more pleasant and easier to read as you can see from Martyanoff’s post.

Dired, of course, gets its information from ls so getting a better date and size format just means changing the arguments to ls, which are specified in one of the above mentioned variables. Sadly, the required changes are specific to the GNU version of ls so you’ll have to use it.

Martyanoff doesn’t mention if this effects Wdired but there’s no reason it should. That would be a showstopper for many of us. Other than that, this seems like a nice change that might be worth implementing. There is just a bit of Elisp involved so it’s easy to try it out and experiment with it.

05 Feb 16:22

US 'neo-imperialist' dollar scheme explained by economist Yanis Varoufakis

Tom Roche

excellent

Greece’s former Finance Minister Yanis Varoufakis explains the US system of “neo-imperialism” based on the dollar, an “IOU issued by the hegemon”, which finances a huge trade deficit by letting foreign capitalists “extract colossal surplus value from their workers and then stash it away in America’s rentier economy”. VIDEO: https://youtube.com/watch?v=yohXMsuxzDA Sources and more information here: https://geopoliticaleconomy.com/2023/02/03/us-imperialism-dollar-hegemony-yanis-varoufakis German lawmaker condemns ‘US-led proxy war against Russia’ and EU’s ‘servile vassals’: https://geopoliticaleconomy.com/2023/01/28/german-lawmaker-us-proxy-war-russia-ukraine-eu Varoufakis' full speech: https://youtube.com/watch?v=6MfuGSlDRsc
05 Feb 15:13

Kushal Das: Using YubiKeys for your linux system

Tom Roche

detailed, but seems a /bit/ extreme:
> mark that the Yubikey must be present during login, and after touching the key, one still has to type in the password, or for lesser security context, one needs either the Yubikey or password to login.

You can use your Yubikey 4 or 5 for the rest of the tutorial.

Why?

If you mark your Yubikey presence is required to unlock your computer, then one not only needs your password, they will have to gain physical access to your Yubikey.

Install the required packages

$ sudo dnf install ykclient* ykpers* pam_yubico*

Getting the Yubikey(s) ready

Connect the Yubikey to your system, and see if it is not getting detected.

$ ykinfo -v
version: 5.2.7

If the system can not find the Yubikey, then it will show the following error.

Yubikey core error: no yubikey present

Then, for each of the Yubikey, we have the run the following command once:

$ ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -ochal-btn-trig -oserial-api-visible
Firmware version 4.2.7 Touch level 517 Program sequence 1

Configuration data to be written to key configuration 2:

fixed: m:
uid: n/a
key: h:9d97972ff90267d7cff02b49d41f85a68325805c
acc_code: h:000000000000
OATH IMF: h:0
ticket_flags: CHAL_RESP
config_flags: CHAL_HMAC|HMAC_LT64|CHAL_BTN_TRIG
extended_flags: SERIAL_API_VISIBLE

Commit? (y/n) [n]: y

Here we are configuring the slot 2, with challenge-response mode, and HMAC (even less than 64 bytes), and also saying that the human has to touch the physical key by providing CHAL_BTN_TRIG, also making the serial API visible.

$ ykpamcfg -2 -v
debug: util.c:219 (check_firmware_version): YubiKey Firmware version: 5.2.7

Sending 63 bytes HMAC challenge to slot 2
Sending 63 bytes HMAC challenge to slot 2
Stored initial challenge and expected response in '/home/kdas/.yubico/challenge-16038846'.

Remember to touch the key button twice after the command sends in 63 bytes, the LED on the key should blink that that time.

Setting up GDM

Now, we can mark that the Yubikey must be present during login, and after touching the key, one still has to type in the password, or for lesser security context, one needs either the Yubikey or password to login.

For the first scenario, add the following to the /etc/pam.d/gdm-password file, just above the auth substack password-auth line.

auth        required      pam_yubico.so mode=challenge-response

If you want either password or Yubikey to work, then replace required with sufficient.

Verify the setup

You will have to logout of Gnome, and then when you click your username while relogin, you will notice that the Yubikey is blinking. Touch it, and then enter password to complete login.

To setup sudo

The similar configuration changes required to be made in /etc/pam.d/sudo. But, remember to keep the sudo session open in one terminal, then try to test the sudo command in another one. Just in case :)

To learn more about the pam configuration, read man pam.conf.

04 Feb 16:46

Carbon capture is here—it just isn’t evenly distributed

by John Timmer
Tom Roche

title is definitely hype: one can infer the profit motive from this pullquote (lightly edited):
> For [CCS systems like CarbonQuest] to be a [significant] net positive for the climate in the longer term, however, we'll need to find permanent [CO2 sinks] beyond concrete. "I think the total capacity for concrete is meaningful compared to the current scale of this kind of CCS or direct air capture but relatively small in the sort of global climate scheme of things," said Anu Khan, the deputy director of science and innovation at Carbon180, a nonprofit that promotes government policies to pull carbon out of the atmosphere. Implicit in Carbon180's advocacy is the idea that we're unlikely to develop uses for all the carbon we've put in the atmosphere quickly enough to reach our climate goals. As such, we'll need to find ways of storing it in geological repositories to keep it out of the atmosphere. And that will have to include paying for operating those repositories.

Image of a large white cylinder with associated pipes.

Enlarge / The tank on the right is one of a half-dozen in which carbon dioxide is separated from other gasses by a compression/decompression cycle. (credit: John Timmer)

Global emissions have continued to burn through the carbon budget, meaning each year brings us closer to having put enough CO2 in the atmosphere that we'll be committed to over 2°C of warming. That makes developing carbon-capture technology essential, both to bring atmospheric levels down after we overshoot and to offset emissions from any industries we struggle to decarbonize.

But so far, little progress has been made toward carbon capture beyond a limited number of demonstration projects. That situation is beginning to change, though, as some commercial ventures start to either find uses for the carbon dioxide or offer removal as a service for companies with internal emissions goals. And the Biden administration recently announced its intention to fund several large capture facilities.

But I recently visited a very different carbon-capture facility, one that's small enough to occupy the equivalent of a handful of parking spaces in the basement of a New York City apartment tower. Thanks to a local law, it's likely to be the first of many. CarbonQuest, the company that installed it, already has commitments from several more buildings, and New York City's law is structured so that the inducement to install similar systems will grow over time.

Read 17 remaining paragraphs | Comments

04 Feb 16:03

James Dyer: How to Display Google Calendar

by James Dyer
Tom Roche

TODO: off Google Calendar:
- Simple Calendar on Android
- Emacs + packages={calfw, calfw-cal} for [ICS file](https://en.wikipedia.org/wiki/ICalendar) read-write

Emacs is subsuming me! I have managed to get email up and running using mu4e and rss using elfeed and image viewing with image-dired

Next up is some form of calendar integration!

Although I use Google Calendar I don’t rely on any google apps directly; an android app called Simple Calendar is adequate for my needs and enables the thing I cherish most of all (except emacs of course!) and that is the ability to produce an offline copy. It can export to an ics file, and I have developed a habit of exporting to an offline file every time I update my calendar. This means that I have some exported calendar files lying around, including of course the most recent one.

Initially I attempted to use org-gcal which potentially enables a two way communication with Google Calendar through their API, but I got lost in the setup and of course this is Google, at some stage it is likely they will either change their API / remove it / or charge for it.

Anyway, do I really need to modify my calendar from within emacs?, I am quite comfortable using Simple Calendar on my phone and if I really need to add calendar entries from my laptop then I always have Thunderbird as a backup.

So I may just be in a very fortunate position regarding an adequate level of emacs calendar integration :

  1. I only require read only
  2. I have an up-to-date ics file available

I created the following function which opens up a nicely formatted calendar using the packages calfw and calfw-cal (and they didn’t require any additional setup).

(defun my/calendar ()
  (interactive)
  (setq tmp-file (concat home-dir "/DCIM/Backup/tmp.org"))
  (delete-file tmp-file)
  (when (get-buffer (file-name-nondirectory tmp-file))
    (kill-buffer (file-name-nondirectory tmp-file)))
  (setq last-ics
        (car (directory-files
              (concat home-dir "/DCIM/Backup")
              'full "\.ics$" #'file-newer-than-file-p)))
  (icalendar-import-file last-ics tmp-file)
  (cfw:open-diary-calendar)
  (cfw:open-diary-calendar)
  (when (get-buffer (file-name-nondirectory last-ics))
    (kill-buffer (file-name-nondirectory last-ics))))

and produces a calendar of the form:

I could import everything directly into my diary-file but I decided to be a little more flexible and potentially allow for multiple calendars by setting an include directive in my diary file as thus:

#include "~/DCIM/Backup/tmp.org"

The key to the my/calendar function is to pull in the most recent ics file and call the built in icalendar-import-file to convert / import the ics data into my diary file. The cfw packages will then take care of the rest. The other parts of the function are just tidying up various buffers and files to make things a little cleaner.

One little wrinkle I discovered and didn’t necessary solve to a satisfactory level was when I first call up cfw:open-diary-calendar the calendar didn’t resize correctly to fit the window, a second call however seemed to fix this and with no overhead.

One final addition was the following:

(add-to-list 'display-buffer-alist
             `(,(rx(or "Calendar"))
               display-buffer-in-direction
               (direction . right)
               (dedicated . t)
               (window . root)
               (window-width . 80)))

Which gives me greater control of where the calendar window is opened

04 Feb 02:31

2/3/23 Weekly Roundup: Paul Pelosi Video Released, Bill Maher to CNN, Buzzfeed ChatGPT, Bernie Vs Pharma, Bill Gates on Epstein Ties, How George Santos Emerged

Tom Roche

All 6 segments listenable ... but the last 3 (starting 13:42 in the audio) are /much/ better:
- Bernie Sanders (new chair of US Senate HELP Committee) vs newly-squirmy Big Pharma
- squirmy-for-a-few-years-now Bill Gates squirming under questions about Jeffrey Epstein
- new Breaking Points partner Spencer Snyder on the making of George Santos, how it depended on the decline of US local-focused media, and how that private-equity-driven decline will probably abet the rise of new frauds, hoaxes, and scams

In this Weekly Roundup we cover the new footage released from Paul Pelosi's home invasion, Bill Maher's Overtime moving to CNN, Buzzfeed laying off 12% of its workforce and replacing them with CHATGPT, Bernie bringing the hammer down on Pharma, Bill Gates squirming under questions about his ties to Jeffrey Epstein, and our new partner Spencer Snyder explores the making of George Santos.

Timestamps:

Pelosi: (00:00)

Maher: (5:30)

Buzzfeed: (9:58)

Bernie: (13:13)

Gates: (22:03)

Spencer: (27:58)


To become a Breaking Points Premium Member and watch/listen to the show uncut and 1 hour early visit: https://breakingpoints.supercast.com/



To listen to Breaking Points as a podcast, check them out on Apple and Spotify



Apple: https://podcasts.apple.com/us/podcast/breaking-points-with-krystal-and-saagar/id1570045623

 


Spotify: https://open.spotify.com/show/4Kbsy61zJSzPxNZZ3PKbXl

 



Merch: https://breaking-points.myshopify.com/

Learn more about your ad choices. Visit megaphone.fm/adchoices

03 Feb 20:22

703 - New Wave Hookers (2/2/23)

Tom Roche

EXCELLENT esp Andrew Sullivan inteviews Rod Dreher

We check in on the very early stages of the ‘24 presidential race, including the various culture wars heating up in Ron DeSantis’ Florida. Then, a conversation between Rod and Andrew Sullivan reveals new depths of psychology, as Rod bungles himself into scandal in Hungary. Get bonus content on Patreon

Hosted on Acast. See acast.com/privacy for more information.

03 Feb 20:22

Hell on Earth - Episode 4: WINDOWS

Tom Roche

VERY EXCELLENT deepdive into Holy Roman Empire c1550-1620 esp Bohemian Revolt

Dynastic ambitions, messianic delusions and One High Fall topple the Holy Roman Empire into war.


Interactive atlas, bibliography and credits for the series can be found at: hellonearth.chapotraphouse.com

Get bonus content on Patreon

Hosted on Acast. See acast.com/privacy for more information.

03 Feb 20:16

Matt Taibbi Exposes Russiagate Bots

by Aaron Maté
Tom Roche

VERY EXCELLENT (post bant) inc foodgroups. TODO: read Jeff Gerth's 4-part deepdive on USCFM Russiagate hoaxmaking: [part 1 (links to rest)](https://www.cjr.org/special_report/trumped-up-press-versus-president-part-1.php) (archived [here]()https://archive.today/plzyM)

Subscribe for the full episode at the bottom of the page. Watch a free preview of our interview here:

With Matt Taibbi’s Twitter Files and Jeff Gerth’s new in-depth reporting for CJR exposing the years of lies spread by Russiagaters, bitter attacks from outed journalists are rolling in.

Gerth and Taibbi, who come from the old style of journalism where you fact check your work and don’t accept government officials’ claims on faith, have each shown clear, indisputable evidence of disinformation campaigns pushed by corporate reporters. And since the so-called journalists can’t argue the facts, they dig themselves a deeper hole with more lies and name-calling.

Jeff Gerth has been working as a reporter for decades and published, in the very mainstream Columbia Journalism Review, a 20,000-word report on his findings, only to be called a liar and misdirecting magician in the most self-important article by Mother Jones’ David Corn (“The true media failure is that Trump got away with it and that articles like this one that you are now reading are still necessary.”) And possibly worse than that is the near complete silence from the rest of mainstream media who, as Gerth reported, refused to follow Bob Woodward’s pleas for introspection.

They’re not silent, however, about Matt Taibbi. These corporate stenographers, either angry that Taibbi called them out for lying or jealous that they didn’t get the Twitter Files story themselves, haven’t made any substantive arguments against his findings both because they can’t, but also because they know they don’t need to. Their audiences are trained to believe them.

There are, however, two people who suggested one substantive criticism of the Twitter Files. Funny enough, they’re two of the real journalists who have been defending Taibbi’s work: Briahna Joy Gray and Glenn Greenwald. Their question: if Musk and Twitter are the guardians of this information, how can you be sure you aren’t being manipulated by the possibility that they are handpicking what they want you to see?

Watch the extended episode to hear Taibbi’s response, plus Matt unveils never-before-shared info on the Twitter Files. It’s a Useful Idiots exclusive.

Plus, catch this week’s Thursday Throwdown where the US says yes to the jets.

It’s all this, and more, on this week’s episode of Useful Idiots. Check it out.

Watch the full interview here:

Read more

03 Feb 18:14

Irreal: Literature Review With Org-ref

by jcs
Tom Roche

TODO: view Kitchin org-ref videos, inc
- [original(?)](https://www.youtube.com/watch?v=2t925KRBbFc)
- [new](https://www.youtube.com/watch?v=F2aNBnxosUQ)

If you’re a researcher or even a college student writing research papers, one of the arduous tasks waiting for you is the literature review. You probably start with a single paper and want to find related papers that address the same problem. In the past, this was a hard problem but the digitization of papers has made it easier.

John Kitchin has made it easier yet. I’ve written before about his excellent org-ref, a package that helps organize and automate references. The org-ref package has always supported literature review but recently Kitchin has added some new features that take advantage of OpenAlex to find

  • Similar papers
  • Citations of the paper
  • Papers listed in the references

It’s an excellent addition that makes literature review a little less onerous. The reason org-ref is so useful is that Kitchin wrote it for his own use as a researcher and it therefore meets real needs as opposed to theoretical needs that someone not involved with research might imagine. If you haven’t already watched Kitchin’s video on org-ref, be sure to take a look. If you’re a researcher it will be enough to make you take up Emacs. It’s a truly amazing piece of software.

I’ve long been a fan of Kitchin’s work and this latest addition to org-ref is a good reason why.

03 Feb 18:12

Grant Rettke: Choosing Between Code and Verbatim Markup In Org Mode

by grant
Tom Roche

(Note: [why this matters](https://irreal.org/blog/?p=11123).) Not sure why they truncated text from [this short article](https://www.wisdomandwonder.com/emacs/13918/choosing-between-code-and-verbatim-markup-in-org-mode), which is {essentially, slightly edited though removing some probable-typos}:

examples of when to use code markup (à la ~code~):
- Class or Object Names: ~java.lang.Object~
- Code Snippets: ~(message "Hello, world.")~
- Compilers and Interpreters: when required to use executable names and not product names. E.g.,
----- ~gcc~ and ~python~ not GCC and Python
----- ~scheme~ and ~java~ not Scheme and Java
- Function Names: ~switch-to-buffer~
- Key Bindings: ~C-x C-e~
- Package Names: when required to use the name that the program or system uses (e.g.)
----- Org mode → ~org-mode~
----- Org2Blog → ~org2blog~
- Shell Commands: ~ls~
- Variable Names: ~kill-ring~

examples of when to use tech markup (à la =verbatim=)
- when /citing/ (or /referring to/) to specific jargon/concepts, e.g.,
----- =Immediately-invoked function expression=
----- =Object Oriented Programming=
- Filenames: =.emacs.el= , =.emacs.d=
- Filetypes: =JPG= , =PNG= , =TIFF=
- Product Names: =Emacs= , =IntelliJ= , =Racket=

Its helped me to standardize my approach to marking up techie language. Keeping it simple the content is either programming stuff or everything else tech related. Sufficiently vauge you see: I write down examples to keep it straight in my head. Here you go: Use Code Markup ~code~ Class or Object Names: Java → java.lang.Object … Continue reading "Choosing Between Code and Verbatim Markup In Org Mode"