bac

“Volunteering — a Way to Give Back When Money Isn’t an Option”

In today’s economy, parting with hard-earned dollars to support your favorite charity or cause just may not be feasible. Consider donating yourself and your time as a way to give back without impacting your piggy bank.

Here’s how Chris Knoll, a cartographer here at NatGeo Maps, is giving back:


As part of an ongoing effort to support access to some of Colorado’s most popular 14er mountains, I participated in a stewardship adventure with Volunteers for Outdoor Colorado who partnered with Colorado Fourteeners Initiative. The main focus of this project was to work on building a sustainable trail up to 14,172 foot peak Mount Bross; which is near Fairplay, CO (90 miles southwest of Denver). Due to numerous unmarked mine shafts and a network of unmanaged social trails, access to the summit of Mount Bross was closed in 2006 until private land owners in conjunction with the US Forest Service can come to an agreement on the new route.

This is where the volunteers come in to action. Four crews totaling about forty people were given the task of stabilizing, reconstructing, and rerouting a trail leading up to Mt. Bross. The work included building sustainable portions of trail by installing rock steps where trail erosion is present, delineating one path up the mountain, and covering up social trails by re-vegetating these areas with native tundra plants that grow at higher elevations.

After work was completed each day, volunteers were fed by VOC staff, and were given the opportunity to socialize around the campfire and even take short hikes in the area. However, nights were called in early due to early 5:45 a.m. wake up calls.

All in all, the work that was completed over the weekend was meaningful and fun. It gives me a great sense of accomplishment knowing that one day, I will be able to hike a trail that I helped to construct.

For more information on non-profit volunteer groups mentioned in this article, check out http://www.voc.org, and http://www.14ers.org.

~Chris Knoll, Cartographer, National Geographic Maps




bac

Back To “Normal”

It’s been over a year since I last posted, and a lot has happened this year, especially in the last 6 (or so) months of it. The biggest thing is maybe that I’ve flown on not one trip but two … Continue reading




bac

Outback Queensland residents spend thousands on flights, grapple with Qantas service changes - ABC News

  1. Outback Queensland residents spend thousands on flights, grapple with Qantas service changes  ABC News
  2. Airlines that love competition: Do you see pigs fly?  Sydney Morning Herald
  3. Predictably, domestic airfares surged after the collapse of Rex. There aren’t many good solutions  The Conversation
  4. Report finds just how much airfares spiked since end of Rex. One route doubled  The Canberra Times
  5. Qantas’ single excuse for fare price hike  news.com.au




bac

Back to the Ranch

In the six months since my retirement from the bench I have not had cause to visit the courthouse. This week, however, I volunteered to show some local people around the building, and I was agreeably surprised to find that I still remembered the pass code for the car park. Our visitors were very interested and full of questions, which reminded me of my very early days as a JP when I found out just how little people knew about the court and its workings. That was a prime reason for my starting a blog a decade ago.




bac

Inside, underneath, backward, upside-down

From holes on Mars to a spun-around moon and a flipped reflection, space science involves looking at things from all different angles.




bac

Europa Clipper: A mission backed by advocates

Europa Clipper will soon head for Jupiter's icy, potentially habitable moon. Without the advocacy efforts of The Planetary Society and our members, the mission may never have been possible.




bac

TurtleWare: Dynamic Vars - The Empire Strikes Back

Table of Contents

  1. Thread Local storage exhausted
  2. The layer of indirection
  3. I can fix her
  4. Let's write some tests!
  5. Summary

Thread Local storage exhausted

In the last post I've described a technique to use dynamic variables by value instead of the name by utilizing the operator PROGV. Apparently it works fine on all Common Lisp implementations I've tried except from SBCL, where the number of thread local variables is by default limited to something below 4000. To add salt to the injury, these variables are not garbage collected.

Try the following code to crash into LDB:

(defun foo ()
  (loop for i from 0 below 4096 do
    (when (zerop (mod i 100))
      (print i))
    (progv (list (gensym)) (list 42)
      (values))))
(foo)

This renders our new technique not very practical given SBCL popularity. We need to either abandon the idea or come up with a workaround.

The layer of indirection

Luckily for us we've already introduced a layer of indirection. Operators to access dynamic variables are called DLET, DSET and DREF. This means, that it is enough to provide a kludge implementation for SBCL with minimal changes to the remaining code.

The old code works the same as previously except that instead of SYMBOL-VALUE we use the accessor DYNAMIC-VARIABLE-VALUE, and the old call to PROGV is now DYNAMIC-VARIABLE-PROGV. Moreover DYNAMIC-EFFECTIVE-SLOT used functions BOUNDP and MAKUNBOUND, so we replace these with DYNAMIC-VARIABLE-BOUND-P and DYNAMIC-VARIABLE-MAKUNBOUND. To abstract away things further we also introduce the constructor MAKE-DYNAMIC-VARIABLE

(defpackage "EU.TURTLEWARE.BLOG/DLET"
  (:local-nicknames ("MOP" #+closer-mop "C2MOP"
                           #+(and (not closer-mop) ecl) "MOP"
                           #+(and (not closer-mop) ccl) "CCL"
                           #+(and (not closer-mop) sbcl) "SB-MOP"))
  (:use "CL"))
(in-package "EU.TURTLEWARE.BLOG/DLET")

(eval-when (:compile-toplevel :execute :load-toplevel)
  (unless (member :bordeaux-threads *features*)
    (error "Please load BORDEAUX-THREADS."))
  (when (member :sbcl *features*)
    (unless (member :fake-progv-kludge *features*)
      (format t "~&;; Using FAKE-PROGV-KLUDGE for SBCL.~%")
      (push :fake-progv-kludge *features*))))

(defmacro dlet (bindings &body body)
  (flet ((pred (binding)
           (and (listp binding) (= 2 (length binding)))))
    (unless (every #'pred bindings)
      (error "DLET: bindings must be lists of two values.~%~
                Invalid bindings:~%~{ ~s~%~}" (remove-if #'pred bindings))))
  (loop for (var val) in bindings
        collect var into vars
        collect val into vals
        finally (return `(dynamic-variable-progv (list ,@vars) (list ,@vals)
                           ,@body))))

(defmacro dset (&rest pairs)
  `(setf ,@(loop for (var val) on pairs by #'cddr
                 collect `(dref ,var)
                 collect val)))

(defmacro dref (variable)
  `(dynamic-variable-value ,variable))

;;; ...

(defmethod mop:slot-boundp-using-class
    ((class standard-class)
     object
     (slotd dynamic-effective-slot))
  (dynamic-variable-bound-p (slot-dvar object slotd)))

(defmethod mop:slot-makunbound-using-class
    ((class standard-class)
     object
     (slotd dynamic-effective-slot))
  (dynamic-variable-makunbound (slot-dvar object slotd)))

With these in place we can change the portable implementation to conform.

#-fake-progv-kludge
(progn
  (defun make-dynamic-variable ()
    (gensym))

  (defun dynamic-variable-value (variable)
    (symbol-value variable))

  (defun (setf dynamic-variable-value) (value variable)
    (setf (symbol-value variable) value))

  (defun dynamic-variable-bound-p (variable)
    (boundp variable))

  (defun dynamic-variable-makunbound (variable)
    (makunbound variable))

  (defmacro dynamic-variable-progv (vars vals &body body)
    `(progv ,vars ,vals ,@body)))

I can fix her

The implementation for SBCL will mediate access to the dynamic variable value with a synchronized hash table with weak keys. The current process is the key of the hash table and the list of bindings is the value of the hash table. For compatibility between implementations the top level value of the symbol will be shared.

The variable +FAKE-UNBOUND+ is the marker that signifies, that the variable has no value. When the list of bindings is EQ to +CELL-UNBOUND+, then it means that we should use the global value. We add new bindings by pushing to it.

#+fake-progv-kludge
(progn
  (defvar +fake-unbound+ 'unbound)
  (defvar +cell-unbound+ '(no-binding))

  (defclass dynamic-variable ()
    ((tls-table
      :initform (make-hash-table :synchronized t :weakness :key)
      :reader dynamic-variable-tls-table)
     (top-value
      :initform +fake-unbound+
      :accessor dynamic-variable-top-value)))

  (defun make-dynamic-variable ()
    (make-instance 'dynamic-variable))

  (defun dynamic-variable-bindings (dvar)
    (let ((process (bt:current-thread))
          (tls-table (dynamic-variable-tls-table dvar)))
      (gethash process tls-table +cell-unbound+)))

  (defun (setf dynamic-variable-bindings) (value dvar)
    (let ((process (bt:current-thread))
          (tls-table (dynamic-variable-tls-table dvar)))
      (setf (gethash process tls-table +cell-unbound+) value))))

We define two readers for the variable value - one that simply reads the value, and the other that signals an error if the variable is unbound. Writer for its value either replaces the current binding, or if the value cell is unbound, then we modify the top-level symbol value. We use the value +FAKE-UNBOUND+ to check whether the variable is bound and to make it unbound.

#+fake-progv-kludge
(progn
  (defun %dynamic-variable-value (dvar)
    (let ((tls-binds (dynamic-variable-bindings dvar)))
      (if (eq tls-binds +cell-unbound+)
          (dynamic-variable-top-value dvar)
          (car tls-binds))))

  (defun dynamic-variable-value (dvar)
    (let ((tls-value (%dynamic-variable-value dvar)))
      (when (eq tls-value +fake-unbound+)
        (error 'unbound-variable :name "(unnamed)"))
      tls-value))

  (defun (setf dynamic-variable-value) (value dvar)
    (let ((tls-binds (dynamic-variable-bindings dvar)))
      (if (eq tls-binds +cell-unbound+)
          (setf (dynamic-variable-top-value dvar) value)
          (setf (car tls-binds) value))))

  (defun dynamic-variable-bound-p (dvar)
    (not (eq +fake-unbound+ (%dynamic-variable-value dvar))))

  (defun dynamic-variable-makunbound (dvar)
    (setf (dynamic-variable-value dvar) +fake-unbound+)))

Finally we define the operator to dynamically bind variables that behaves similar to PROGV. Note that we PUSH and POP from the thread-local hash table DYNAMIC-VARIABLE-BINDINGS, so no synchronization is necessary.

#+fake-progv-kludge
(defmacro dynamic-variable-progv (vars vals &body body)
  (let ((svars (gensym))
        (svals (gensym))
        (var (gensym))
        (val (gensym)))
    `(let ((,svars ,vars))
       (loop for ,svals = ,vals then (rest ,svals)
             for ,var in ,svars
             for ,val = (if ,svals (car ,svals) +fake-unbound+)
             do (push ,val (dynamic-variable-bindings ,var)))
       (unwind-protect (progn ,@body)
         (loop for ,var in ,svars
               do (pop (dynamic-variable-bindings ,var)))))))

Let's write some tests!

But of course, we are going to also write a test framework. It's short, I promise. As a bonus point the API is compatibile with fiveam, so it is possible to drop tests as is in the appropriate test suite.

(defvar *all-tests* '())

(defun run-tests ()
  (dolist (test (reverse *all-tests*))
    (format *debug-io* "Test ~a... " test)
    (handler-case (funcall test)
      (serious-condition (c)
        (format *debug-io* "Failed: ~a~%" c))
      (:no-error (&rest args)
        (declare (ignore args))
        (format *debug-io* "Passed.~%")))))

(defmacro test (name &body body)
  `(progn
     (pushnew ',name *all-tests*)
     (defun ,name () ,@body)))

(defmacro is (form)
  `(assert ,form))

(defmacro pass ())

(defmacro signals (condition form)
  `(is (block nil
         (handler-case ,form
           (,condition () (return t)))
         nil)))

(defmacro finishes (form)
  `(is (handler-case ,form
         (serious-condition (c)
           (declare (ignore c))
           nil)
         (:no-error (&rest args)
           (declare (ignore args))
           t))))

Now let's get to tests. First we'll test our metaclass:

(defclass dynamic-let.test-class ()
  ((slot1 :initarg :slot1 :dynamic nil :accessor slot1)
   (slot2 :initarg :slot2 :dynamic t   :accessor slot2)
   (slot3 :initarg :slot3              :accessor slot3))
  (:metaclass class-with-dynamic-slots))

(defparameter *dynamic-let.test-instance-1*
  (make-instance 'dynamic-let.test-class
                 :slot1 :a :slot2 :b :slot3 :c))

(defparameter *dynamic-let.test-instance-2*
  (make-instance 'dynamic-let.test-class
                 :slot1 :x :slot2 :y :slot3 :z))

(test dynamic-let.1
  (let ((o1 *dynamic-let.test-instance-1*)
        (o2 *dynamic-let.test-instance-2*))
    (with-slots (slot1 slot2 slot3) o1
      (is (eq :a slot1))
      (is (eq :b slot2))
      (is (eq :c slot3)))
    (with-slots (slot1 slot2 slot3) o2
      (is (eq :x slot1))
      (is (eq :y slot2))
      (is (eq :z slot3)))))

(test dynamic-let.2
  (let ((o1 *dynamic-let.test-instance-1*)
        (o2 *dynamic-let.test-instance-2*))
    (signals error (slot-dlet (((o1 'slot1) 1)) nil))
    (slot-dlet (((o1 'slot2) :k))
      (is (eq :k (slot-value o1 'slot2)))
      (is (eq :y (slot-value o2 'slot2))))))

(test dynamic-let.3
  (let ((o1 *dynamic-let.test-instance-1*)
        (exit nil)
        (fail nil))
    (flet ((make-runner (values)
             (lambda ()
               (slot-dlet (((o1 'slot2) :start))
                 (let ((value (slot2 o1)))
                   (unless (eq value :start)
                     (setf fail value)))
                 (loop until (eq exit t) do
                   (setf (slot2 o1) (elt values (random (length values))))
                   (let ((value (slot2 o1)))
                     (unless (member value values)
                       (setf fail value)
                       (setf exit t))))))))
      (let ((r1 (bt:make-thread (make-runner '(:k1 :k2))))
            (r2 (bt:make-thread (make-runner '(:k3 :k4))))
            (r3 (bt:make-thread (make-runner '(:k5 :k6)))))
        (sleep .1)
        (setf exit t)
        (map nil #'bt:join-thread (list r1 r2 r3))
        (is (eq (slot2 o1) :b))
        (is (null fail))))))

Then let's test the dynamic variable itself:

(test dynamic-let.4
  "Test basic dvar operators."
  (let ((dvar (make-dynamic-variable)))
    (is (eql 42 (dset dvar 42)))
    (is (eql 42 (dref dvar)))
    (ignore-errors
     (dlet ((dvar :x))
       (is (eql :x (dref dvar)))
       (error "foo")))
    (is (eql 42 (dref dvar)))))

(test dynamic-let.5
  "Test bound-p operator."
  (let ((dvar (make-dynamic-variable)))
    (is (not (dynamic-variable-bound-p dvar)))
    (dset dvar 15)
    (is (dynamic-variable-bound-p dvar))
    (dynamic-variable-makunbound dvar)
    (is (not (dynamic-variable-bound-p dvar)))))

(test dynamic-let.6
  "Test makunbound operator."
  (let ((dvar (make-dynamic-variable)))
    (dset dvar t)
    (is (dynamic-variable-bound-p dvar))
    (finishes (dynamic-variable-makunbound dvar))
    (is (not (dynamic-variable-bound-p dvar)))))

(test dynamic-let.7
  "Test locally bound-p operator."
  (let ((dvar (make-dynamic-variable)))
    (is (not (dynamic-variable-bound-p dvar)))
    (dlet ((dvar 15))
      (is (dynamic-variable-bound-p dvar)))
    (is (not (dynamic-variable-bound-p dvar)))))

(test dynamic-let.8
  "Test locally unbound-p operator."
  (let ((dvar (make-dynamic-variable)))
    (dset dvar t)
    (is (dynamic-variable-bound-p dvar))
    (dlet ((dvar nil))
      (is (dynamic-variable-bound-p dvar))
      (finishes (dynamic-variable-makunbound dvar))
      (is (not (dynamic-variable-bound-p dvar))))
    (is (dynamic-variable-bound-p dvar))))

(test dynamic-let.9
  "Stress test the implementation (see :FAKE-PROGV-KLUDGE)."
  (finishes                              ; at the same time
    (let ((dvars (loop repeat 4096 collect (make-dynamic-variable))))
      ;; ensure tls variable
      (loop for v in dvars do
        (dlet ((v 1))))
      (loop for i from 0 below 4096
            for r = (random 4096)
            for v1 in dvars
            for v2 = (elt dvars r) do
              (when (zerop (mod i 64))
                (pass))
              (dlet ((v1 42)
                     (v2 43))
                (values))))))

(test dynamic-let.0
  "Stress test the implementation (see :FAKE-PROGV-KLUDGE)."
  (finishes                             ; can be gc-ed
    (loop for i from 0 below 4096 do
      (when (zerop (mod i 64))
        (pass))
      (dlet (((make-dynamic-variable) 42))
        (values)))))

All that is left is to test both dynamic variable implementations:

BLOG/DLET> (lisp-implementation-type)
"ECL"
BLOG/DLET> (run-tests)
Test DYNAMIC-LET.1... Passed.
Test DYNAMIC-LET.2... Passed.
Test DYNAMIC-LET.3... Passed.
Test DYNAMIC-LET.4... Passed.
Test DYNAMIC-LET.5... Passed.
Test DYNAMIC-LET.6... Passed.
Test DYNAMIC-LET.7... Passed.
Test DYNAMIC-LET.8... Passed.
Test DYNAMIC-LET.9... Passed.
Test DYNAMIC-LET.0... Passed.
NIL

And with the kludge:

BLOG/DLET> (lisp-implementation-type)
"SBCL"
BLOG/DLET> (run-tests)
Test DYNAMIC-LET.1... Passed.
Test DYNAMIC-LET.2... Passed.
Test DYNAMIC-LET.3... Passed.
Test DYNAMIC-LET.4... Passed.
Test DYNAMIC-LET.5... Passed.
Test DYNAMIC-LET.6... Passed.
Test DYNAMIC-LET.7... Passed.
Test DYNAMIC-LET.8... Passed.
Test DYNAMIC-LET.9... Passed.
Test DYNAMIC-LET.0... Passed.
NIL

Summary

In this post we've made our implementation to work on SBCL even when there are more than a few thousand dynamic variables. We've also added a simple test suite that checks the basic behavior.

As it often happens, after achieving some goal we get greedy and achieve more. That's the case here as well. In the next (and the last) post in this series I'll explore the idea of adding truly thread-local variables without a shared global value. This will be useful for lazily creating context on threads that are outside of our control. We'll also generalize the implementation so it is possible to subclass and implement ones own flavor of a dynamic variable.




bac

old growth grow back

Today on Married To The Sea: old growth grow back


This RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see!




bac

o but my back aches

Today on Married To The Sea: o but my back aches


This RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see!




bac

put that back jason

Today on Married To The Sea: put that back jason


This RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see!




bac

Donegal captain on comeback trail

Donegal captain Michael Murphy hopes he will be fit to play in next month's Ulster championship preliminary round tie against Cavan.




bac

Twitter Roasts Pete Buttigieg For His Staged 'Walk Back To Iowa'

Poor Mayor Pete just can't seem to catch a break on the internet. The presidential candidate from South Bend, Indiana tweeted a photo of himself walking down a hallway on Saturday with the caption, "On my way back to Iowa. It's phase 4. Let's do this." The tweet has been catching a fair amount of flack for appearing to be staged. 

Here are some of Twitter's most amusing reaction memes and tweets!




bac

CC Welcomes Sarah Pearson Back as General Counsel

As part of CC’s renewed commitment to investing in the core open infrastructure it stewards, we are excited to announce several updates to our legal team.  Sarah Hinchliff Pearson is returning to Creative Commons as General Counsel. She will manage in-house legal work and play a leading role in shaping CC’s stewardship program and its…

The post CC Welcomes Sarah Pearson Back as General Counsel appeared first on Creative Commons.




bac

RWE Plans €1.5 Billion Buyback as US Politics Cloud Investments




bac

Thames Water gets backing from three-quarter of creditors; markets eye US inflation – business live

Emergency funding deal would give struggling water company £3bn lifeline Thames Water has been teetering on the brink of collapse since being described as “uninvestible” in March when shareholders refused to pour in more cash. The government has been on standby for nationalisation through a…




bac

Girl Sends Fan Mail to Tom Hanks, and Receives Legendary Response Back From the Man Himself








bac

Why must the dog always scratch with his back paw?




bac

Older people from black and minority ethnic backgrounds Accessing health and social care services in south GLasgow

The Advocacy Project works with older people and other groups across Glasgow and Lanarkshire to ensure their voice is heard, their needs met and their legal rights safeguarded. The organisation identified a low take up of their own service by older people from BME communities, which was generally held to reflect the wider picture in Glasgow in relation to health and social work services. This report was commissioned by them to examine barriers to access to services specifically for older people from BME communities in Glasgow South, where there is a high concentration of people from BME communities.




bac

Back to Basics: Selling Sociology

Despite, well, everything, we are trying to get back into the classroom as much as we can at the start of a new academic year. I am scheduled to teach Introduction to Sociology for the first time this coming spring and planning the course this fall. Whether in person or remote, I will be ecstatic […]




bac

Bacon Wrapped Water Chestnuts

Bacon Wrapped Water Chestnuts are a delicious appetizer that combines the savory flavor of bacon with the crunchy texture of water chestnuts, all dressed-up in a sweet, savory, and tangy sauce. This classic dish is perfect for the holidays, parties, or any get together where you want to totally impress your guests with most tasty...

The post Bacon Wrapped Water Chestnuts appeared first on Dear Crissy.




bac

Carl Sagan Said ‘Back to the Future’ Was Best Time-Travel Movie

By Matt Solomon Published: November 11th, 2024




bac

Casa Bonita Is Betting on Chlorine-Scented Candles to Make Trey Parker and Matt Stone’s Money Back

By JM McNab Published: November 12th, 2024




bac

Elon Musk Fires Back at ‘SNL’s Chloe Fineman

By Matt Solomon Published: November 12th, 2024




bac

Jason Sudeikis Claps Back at all the ‘Ted Lasso’ Season Three Haters

By Keegan Kelly Published: November 12th, 2024




bac

Hasbro flashes back to the 90s with The Last Command action figure set

Hasbro has produced a 4-figure set for a 21-year old Timothy Zahn Star Wars books and it DOESN'T feature Thrawn?




bac

Who should have a garden pond in their backyard?

Garden ponds are increasingly becoming popular among homeowners. The scramble for ponds can be attributed to their aesthetics, growing appreciation for wildlife and environmental awareness. As homeowners increasingly become aware of the need to maintain a sustainable ecosystem, they are more willing to adopt unique ideas such as keeping garden ponds. But are garden ponds really sustainable?[...]




bac

A natural personal care brand that gives back to communities

Soapbox is a company dedicated to providing meticulously-crafted personal care products that focus on the health of humans and the environment. [...]




bac

I like to drink when I work out...I call it Bacardio




bac

Inside the Cure’s Big Halloween Comeback: Concert, BBC Takeover and ‘Lost World’ Album

From Variety:


Brit Beat: Inside the Cure’s Big Halloween Comeback: Concert, BBC Takeover and ‘Lost World’ Album

By Mark Sutherland

It’s been 16 long years since legendary British alternative rockers the Cure last released a studio album, but the campaign for the band’s new outing, “Lost World,” has made it feel like they’ve never been away.

And the band has also returned “home” to the Fiction-via-Polydor label, which released the band’s recordings up until 2004’s self-titled album. The most recent two Cure albums came out via America on Geffen, but Polydor Label Group President Ben Mortimer says he made it his “mission” to bring the band back to the record company.

“I actually can’t believe it’s happened because it’s been a conversation that’s been going on for so long,” Mortimer tells Variety. “Robert Smith sits alongside Paul Weller, who we brought back to Polydor a few years ago, as one of those people who are really in the fabric of the label. [The return] has really energized the whole label and tapped into the soul of what we do.”

Mortimer says “huge credit” should also go to Fiction Records Managing Director Jim Chancellor, “who has had a brilliant relationship with Robert for a long time.” Smith manages the band himself and Mortimer says the release plan came together over numerous emails featuring Smith’s trademark “all caps firmly on” style.

Key to the strategy was a suitably gothic Cure takeover of the BBC on Halloween, the day before “Songs of a Lost World” dropped, with a live session on BBC Radio 6 Music and a career-spanning BBC Radio 2 “In Concert” recording, which was also televised as part of a BBC 2 Cure night on November 2. The “In Concert” recording reportedly received the most ticket applications of any show in the long-running series.

“One of the stipulations Robert had on doing the deal was that the album to come out straight after Halloween,” Mortimer says. “Our production team had to jump through hoops to deliver vinyl and everything in time. It was really touch and go but Robert was very clear, unless it’s coming November 1, we ain’t doing this!”

The band also made a spectacular full live return with an intimate show at London’s Troxy venue on November 1, which featured a full rendition of the new album as well as many other songs. It was livestreamed around the world on YouTube and attended by many other musicians, from Green Day’s Billie Joe Armstrong to Culture Club’s Boy George.

All that attention – and some of the best reviews of the band’s career – has also translated into record sales, with the album set to debut at No.1 in the Official U.K. Albums Chart on November 8. It had already passed 40,000 units by Monday, according to the Official Charts Company. That’s despite this being the band’s first album release of the streaming age – previous studio album “4:13 Dream” came out in 2008 – with Mortimer saying the band racked up huge numbers of Spotify pre-saves.

“The Universal catalog team, alongside Robert, have done a very good job of keeping things alive for years, but it’s more than that,” says Mortimer. “If you look at their streams, there are tracks at over 700 million on Spotify, so there is a young audience there that streams the Cure.

“We’ve brought in new ideas – Robert’s remarkably open to modern ways of thinking, he’s such an intelligent man, he grasps things so quickly – but I don’t think it changed his strategy,” Mortimer adds. “Some artists are able to speak to different generations, and the Cure are one of those.”

With the band likely to announce further touring plans, Mortimer is expecting a long campaign for the album, one of the first big releases through the new Polydor Label Group, after a major Universal U.K. restructure: Mortimer now also oversees the Capitol U.K. and 0207 Def Jam labels, run by Jo Charrington and Alec Boateng respectively.

“It’s been a crazy year across the whole business, but I’m really thankful about the new responsibilities that I have,” says Mortimer. “Working with Jo and Alec is just an absolute dream, they’re some of the best A&R executives of recent generations and they’ve brought so many brilliant artists into our system, so I’m feeling really lucky. Everyone complements each other really well.”

Meanwhile, the American release of “Songs of a Lost World” goes through Capitol, meaning Mortimer has reunited with his former Polydor co-president Tom March, now chairman/CEO of Capitol Music Group (“Tom’s wonderful – having a Brit over there who gets it has been really helpful”). The pair revived Polydor’s fortunes in the 2010s and Mortimer is hopeful the Cure’s renewed success could also bring back the buzz to music from this side of the pond.

“It feels like there’s real interest in what the U.K. and Ireland does really well again,” he says. “You look at Oasis, the Cure, plus we’re getting such an explosion of interest on Sam Fender at the moment and we’re seeing growth on a band like Inhaler… We’ve been talking about it for 15 years but it’s genuinely happening now.”




bac

I'm Back to Painting! Decorative Painted Papers for Bookmaking and Paper Arts

I learned to create decorative painted papers from Paulus Berensohn, Albie Smith, Lynne Perrella, Anne Bagby, and others by taking wonderful workshops from them in the 1990s, and soon adapted their techniques to making books with beadwork inserted into the covers, like the one below. I use my painted papers on the book covers and for signature covers, which look great with this type of binding.

But after moving to the island where I've lived for 20 years now, I gradually got into quilting and textile arts, kept the beadwork going, and cut way back on painting. Until now!

Inspired, cajoled, and arm-twisted by one of the Textile Guild members, who wants to learn how to paint papers and make books like mine, I agreed to teach a workshop (2 days of painting and 2 days of bookmaking) for the guild members. Of course, since I hadn't painted for many years, I first had to get back into practice. Yay! What fun I've been having, painting in my shed (thankfully heated). The paper below is my favorite of about 20 painted in the last two weeks. The size is 18 x 24 inches. (Please click to see the details!)

And below are two more to go with it.  The paper above will be used for a book cover, even though it will be hard for me to cut it up. The two papers below will be cut (horizontally) into thirds, and used as signature covers. For those unfamiliar with bookmaking, a signature is a section of papers within a book. Each of the six signatures in my book will be covered with this decorative paper.


It's a fun, playful, and experimental process to paint like this, easier for me than it would be to paint figuratively (landscape, still life, or people). With this type of painting, I just mix matte medium with a color or two of acrylic paint, and apply it by rolling, stamping, stenciling in layers. I keep adding layers until I like it, at which point it's a finished paper. There is always at least part of each paper that pleases me enough to use it for bookmaking and paper arts.

These are the basic supplies and tools I use to paint the papers:

1.) Although acrylic paints and this method can be used to paint on almost any surface or paper, I usually paint on 80-90# drawing paper to make decorative papers.

2.) I prefer using a roller to apply background colors or glazes, rather than a brush. My favorite, purchased online from Dick Blick Art Supplies, is a 2.2"  dense foam roller.

3.) Assorted stamps and stencils. I carve a lot of my own stamps, as you will see below, but sometimes also use commercial stamps. Note that commercial rubber stamps with fine detail for stamping with inks do not work well with acrylics, as the paint clogs the fine lines, ruining the stamp.

4.) Assorted materials, such as a notched adhesive-spreader, coarse sea-sponge, webbed food packaging materials, and bubble wrap are useful to print, texture, and stencil.

5.) Acrylic paints. I use heavy-body paint (rather than fluid acrylics) of student-grade or better quality.

6.) Matte medium and glazing medium (slow drying) are added to extend the paint.

I know, maybe you're thinking I should do a video tutorial. OK. You set it up, and I'll do it. In the meantime, I'd rather be painting...  Here are three more recently painted papers for your viewing pleasure (I hope).



The one directly above is my attempt to emulate batik fabric from India. I had a bedspread back in the hippy 60s with a burgundy design on a mustard yellow background, the memory of which was the inspiration for this paper. I carved all of the stamps used to make it.

I love to carve my own stamps, and sometimes cut my own stencils as well. Let's take a look at that process. It's quite easy really, requiring only a block of Speedy-Carve (or other high-density rubber carving block), and a Speed-Ball Carving tool. Designs can be free cut, drawn right on the carving block, or transferred from a tracing. Here's a fairly decent tutorial on the stamp carving process.

Designs? Well, everywhere I look I see possibilities for carving more stamps! Recently, visiting a fabric store with my quilting buddies, I spied a fat quarter of batik fabric with a luscious design. Here is the fabric:

And here is the stamp I carved from a tracing I made of the central flower. The stamp is the same size as on the fabric, about 3" in diameter.

I also cut a stencil, which you can see below. A friend had a commercial stencil of these three leaves, which I really liked. After borrowing her stencil to use on one of my papers, I traced the painted image, and cut out my own stencil. The tool in this image is a Speed-Ball cutter, which I use to carve the rubber to make stamps.

You've already seen (way above) the whole sheet of paper I painted using just this stamp and stencil, but here's a detail. If you click to enlarge, you can see more about how I paint in layers, first the background colors, next the leaves, then a different color over-stencil on the leaves, and last the flowers.

If you like to play with paint, you might want to give it a try! Here are just a few more of my recently painted papers to tempt you...





I'll be teaching a 2-day bookmaking workshop in mid-May using papers like these to create three different books. There may still be a spot or two available in the class. If you are interested, you can contact me for more information.

You may want to visit my website to see more about my handmade books and painted papers. And there are several earlier posts here on Beadlust with pictures of books made with painted decorative papers and beading by my students, as well as other related topics. Here are a few of them:

  1. Wedding book
  2. Lisa's book (from a workshop I taught in Wisconsin); her fabulous website is here.
  3. Susan's book (from a workshop I taught in Wisconsin)
  4. painting papers for making Christmas cards
  5. Using symbols in our art and symbols in acrylic painting  
  6. Using these techniques to paint with dyes on fabric and more fabric paint/dye examples

Susan Anderson took my bookmaking/painting/beading workshop twice at the Coupeville Art Center. These are the papers for her first book, and if you click to enlarge, you can also see her finished book.

And, to close this post, here is a photo of some of the handmade books I've created over the years... most of them utilize decorative painted papers and bead embroidery.

Thanks for sticking with me to the end of this long post :)!




bac

Gene Jarrett takes us back to the Gilded Age in his new biography of Paul Laurence Dunbar

The book joins others by Princeton faculty on The New Yorker list of the year’s best. Jarrett gives a talk at Labyrinth Books on Thursday, Nov. 3.




bac

2025 Oscars Short Film Contenders: ‘The Car That Came Back From The Sea’ Director Jadwiga Kowalska

In this Oscar-qualified short, a group of friends go on a roadtrip as their car – and their country – falls apart.




bac

Facebook Feeds Are Back On

Facebook review team has approved our Facebook Feeds app and now all Facebook feeds are working again. All previously generated Facebook feeds will be automatically resumed..

The post Facebook Feeds Are Back On appeared first on RSSground.com.



  • RSS Ground News

bac

Video: Back to Back Laps on a 2002 DH Bike & A Modern DH Bike at Mount Prevost



A lot has changed in 22 years.
( Photos: 1, Comments: 64 )




bac

OSIRIS-REx is bringing back an asteroid sample. What now?

The debris NASA’s asteroid-touching spacecraft collected could help us learn about the origins of our solar system. But for that to happen, scientists have to protect it from just about everything.




bac

5 reasons why humans are going back to the Moon

Earth’s natural satellite could be a jumping-off point for future space exploration.




bac

Looking back on the year 5784: A soundtrack of war, love, and TikTok


After the initial shock had worn off and the country began pulling together, people were looking for ways not only to express themselves but also to uplift others.




bac

Đường sắt cao tốc Bắc-Nam: Phương án trình cho Quốc hội có phải khả thi nhất?

Chính phủ Việt Nam đang thể hiện quyết tâm mạnh mẽ xây đường sắt cao tốc, vẽ ra nhiều viễn cảnh tươi đẹp. Tuy nhiên, liệu bài toán có đơn giản như điệp khúc “ăn sáng ở Hà Nội, ăn trưa ở Sài Gòn”?




bac

Ứng viên ngoại trưởng Mỹ: cứng rắn với Trung Quốc, từng bị Bắc Kinh trừng phạt

Tổng thống đắc cử Donald Trump dự kiến sẽ bổ nhiệm Thượng nghị sĩ bang Florida Marco Rubio cho vị trí ngoại trưởng Mỹ




bac

Soros-Backed George Gascon Loses Los Angeles DA Race In Landslide

By Wallace White Los Angeles County District Attorney George Gascon lost his seat in a landslide to independent challenger Nathan Hochman, The Associated Press and Los Angeles Times reported. Gascon is projected to lose against Hochman in a crucial seat in one of America’s most crime-ridden cities, according to the AP and the LA Times […]

The post Soros-Backed George Gascon Loses Los Angeles DA Race In Landslide appeared first on Liberty Unyielding.




bac

Mountain gorillas are making a comeback in Rwanda

Rwanda is one of the world’s poorest and most densely-populated countries, with population growth placing pressure on forests and natural habitat. But despite that, mountain gorillas are making a comeback in Rwanda. The World Economic Forum explains: In the 1980s, fewer than 300 mountain gorillas in Rwanda remained in the Virunga mountains. Today, thanks to […]

The post Mountain gorillas are making a comeback in Rwanda appeared first on Liberty Unyielding.



  • Science and Technology

bac

'I embrace my alopecia, but I’d love my old hair back’

People living with alopecia could have access to treatment on the NHS in Scotland for the first time.




bac

Assisted dying law change backed by 'citizens' jury'

The panel of 28 felt it was important to give people choice, but only if they were terminally ill.




bac

Trump victory is a major setback for climate action, experts say

Trump's election will hit immediate efforts to tackle climate change, experts say - but the longer-term effect is less certain.




bac

Back at Base: Go behind the scenes at Mercedes & Williams

This eight-part podcast series gives you unprecedented access to Mercedes and Williams.




bac

Democrats' bet on a generation of liberal voters has backfired badly

Latino, black and younger voters once helped Obama win power - Trump made gains with all three groups this election. Why?




bac

News24 | US strikes targets to 'degrade the Iranian-backed groups' ability' in Syria

The US military has carried out strikes against targets in Syria in what the United States Central Command (CENTCOM) said was a response to recent attacks on US forces by "Iranian-aligned targets" in the country.




bac

Back to Elementary School With Storytelling

Engaging in storytelling gives students an opportunity to connect with each other and understand classroom expectations. Teacher Matthew James Friday says, "I tell a story every day for the first two or three weeks. I also suggest that the students can become storytellers themselves. All they need to do is write a story at home. After a few weeks of my telling stories, something magical always happens: A student brings in a story."