Long but interesting, on how a group of radical environmentalists occupying a German forest in protest of lignite mining do/use…

IFTTT, Twitter, jcalpickard


(via http://twitter.com/jcalpickard/status/1319010629542359042)

Reverse engineered favourite mask, improved fit, added nose wire feature, made triple layer, and used fabric printed using…

IFTTT, Twitter, AmberFirefly


(via http://twitter.com/AmberFirefly/status/1318996962784497666)

A critique is not a matter of saying that things are not right as they are. It is a matter of pointing out on what kinds of…

Foucault, critique, thinking, assumptions, philosophy, 1981

“A critique is not a matter of saying that things are not right as they are. It is a matter of pointing out on what kinds of assumptions, what kinds of familiar, unchallenged, unconsidered modes of thought the practices that we accept rest… We must free ourselves from the sacralization of the social as the only reality and stop regarding as superfluous something so essential in human life and human relations as thought.”

Michel Foucault, “Practicing Criticism,” or “Is it really important to think?” May 30–31, 1981. Didier Eribon interview. In Lawrence Kritzman, Foucault, Politics, Philosophy, Culture. New York and London: Routledge, 1988. p. 155.

Lots of people saying they are tired of the pandemic because it’s stretching on. I’m tired of it because it went from a (kinda)…

IFTTT, Twitter, inevernu


(via http://twitter.com/inevernu/status/1317532386532483074)

In 1994 the UK government passed Section 63, a law which allowed the police to shut down any “gathering on land in the open air…

yr-bed:

In 1994 the UK government passed Section 63, a law which allowed the police to shut down any “gathering on land in the open air of 20 or more persons…at which amplified music is played;” specifically, music whose “sounds wholly or predominantly characterised by the emission of a succession of repetitive beats. In response, Autechre released their Anti EP,with a sticker which read as follows

“Warning: Lost and Djarum contain repetitive beats. We advise you not to play these tracks if the Criminal Justice Bill becomes law. Flutter has been programmed in such a way that no bars contain identical beats and can therefore be played at 45 or 33 revolutions under the proposed law.

“However we advise DJs to have a lawyer and musicologist present at all times to confirm the non-repetitive nature of the music in the event of police harassment.

“Important: By breaking this seal, you accept full responsibility for any consequential action resulting from the product’s use, as playing the music contained within these recordings may be interpreted as opposition to the Criminal Justice and Public Order Bill.”

“Inspired by the ideal of self-sufficiency developed by the anarchist Pyotr Kropotkin, the German architect Leberecht Migge…

probablyasocialecologist:

“Inspired by the ideal of self-sufficiency developed by the anarchist Pyotr Kropotkin, the German architect Leberecht Migge integrated it into his project of self-sufficient co-operatives. In his pamphlet Jedermann Selbstversorger (Everyone Self-Sufficient, 1918) and his article ‘Das grüne Manifest’ (1919, the first occurrence of the term ‘green’ in a political sense), he developed a political and urbanistic theory based on garden cities that would be self-sufficient thanks to solar and wind power, horticulture and the strict recycling of organic waste. Recycling was the essential lever to escape from the great technological networks of capitalism and establish self-management, ‘the smallest form of government possible – according to the will of the people’.”

— Christophe Bonneuil and Jean-Baptiste Fressoz, The Shock of the Anthropocene

It is never too early to start talking about outer space labor law

the-last-dillards:

the-last-dillards:

It is never too early to start talking about outer space labor law

Like even NASA has been guilty of treating astronauts like organic robots in the past (see SkyLab Strike). You really think someone like Elon Musk will care about their employees working in microgravity beyond their ability to continue performing their job?

For example, NASA astronauts are currently required to work out two hours a day to keep up their bone and muscle mass. This helps prevent irreparable damage/loss and lets them eventually return to living their normal lives on Earth. But exercise equipment is heavy, and it costs $10000 per pound when you’re shooting something into orbit. That’s a lot! Can a company be trusted to send enough equipment into space for each of their employees to get that two hours in when the benefit is for the employees after they’ve served their time? 

How long will these companies expect their employees to stay in microgravity when it’s cheaper for them to leave a single person up there for a long period of time than to bring them down and switch them out? If someone gets sick or wants to quit? 

These are questions and concerns that will need to be addressed in the near future as the space industry becomes further and further commercialized and companies begin to break away from merely contracting for government space agencies.

Autechre

autechre, listening, music, 2016, 2020, bandcamp

zzkt:

Autechre have created a unique and particular sonic universe, so it’s hard to say what’s best or most representative of their music, and you’ll probably get as many different answers as people you ask. so perhaps a suggested heuristic path…

find elseq (in parts 1,2,3,4,,5 (it’s the most recent and compresses much of their work strangely). chronologically, listen to Eggshell, if you like it get Incunabula. listen to Montreal or Foil if you like them get Amber. listen to Rsdio. just listen to it (and get tri repetae) C/Pach is probably most indicative of where they go next, which is Chiastic Slide. listen to Nuane. listen to Arch Carrier or Corc from LP5. Confield is quite broad, try Uviol or Lentic Catachresis or Parhelic Triangle. from Draft 7.30 listen to Xylin Room or Surripere or IV VV IV VV VIII or Theme Of Sudden Roundabout. from Untilted listen to Sublimit or Augmatic Disport. from Quaristice try IO (mons) or Tankraken. Treale or d-sho qub from Oversteps. from Exai listen to irlite (get 0) or just the whole album. their live material is worth listening to as individual pieces.

(note this just covers their albums, so doesn’t include the various EPs. you can think of the EPs from each period as similar, yet distinct. if you find any particular album interesting chances are you’ll like the other material from around the same period)

(i left out the bit where you open a small door and find a Gescom)

…and since then, the NTS Sessions (part 1,2,3,4) and Sign have been released

Autechre

autechre, listening, music, 2016, bandcamp

Autechre have created a unique and particular sonic universe, so it’s hard to say what’s best or most representative of their music, and you’ll probably get as many different answers as people you ask. so perhaps a suggested heuristic path…

find elseq (in parts 1,2,3,4,,5 (it’s the most recent and compresses much of their work strangely). chronologically, listen to Eggshell, if you like it get Incunabula. listen to Montreal or Foil if you like them get Amber. listen to Rsdio. just listen to it (and get tri repetae) C/Pach is probably most indicative of where they go next, which is Chiastic Slide. listen to Nuane. listen to Arch Carrier or Corc from LP5. Confield is quite broad, try Uviol or Lentic Catachresis or Parhelic Triangle. from Draft 7.30 listen to Xylin Room or Surripere or IV VV IV VV VIII or Theme Of Sudden Roundabout. from Untilted listen to Sublimit or Augmatic Disport. from Quaristice try IO (mons) or Tankraken. Treale or d-sho qub from Oversteps. from Exai listen to irlite (get 0) or just the whole album. their live material is worth listening to as individual pieces.

(note this just covers their albums, so doesn’t include the various EPs. you can think of the EPs from each period as similar, yet distinct. if you find any particular album interesting chances are you’ll like the other material from around the same period)

(i left out the bit where you open a small door and find a Gescom)

Games with Tracery

NaNoGenMo, tracery, 2019

procedural-generation:

galaxykate0:

Someone online asked if there was a guide to integrating Tracery with games, so I wrote one.

Tracery is named for the architectural term “tracery”, the curly filigree part of gothic cathedrals. Tracery doesn’t hold up the cathedrals: it’s decorative not structural. If you find yourself trying to do very complex data storage and conditionals with Tracery, you might be trying to build a cathedral with filigree. It is best to use your game code (javascript or Unity, or whatever else you use) itself to perform complex tasks like these. Tracery is best for adding decoration afterwards. But there are some good techniques for adding Tracery to games that I’ve encountered.

Common uses of Tracery

Games often have abstract rule systems at their core (see Joris Dormans work on modelling games abstractly http://www.jorisdormans.nl/machinations/). But even for games with identical rule systems, content can create flavor and feelings that go far beyond the meaning of rule systems. Ladykiller in a Bind and Hatoful Boyfriend may have very similar mechanical systems driving them, but what wonderfully different experiences we get from their unique content! From flavortext on Magic: the Gathering cards to story arcs and dialogues of dating sims, or the sprawling poetry of Twine games, content can serve many purposes in a game.

Tracery, and other grammar-based templating languages, are already popular in games to create new content. Dietrich Squinkifer uses it in Interruption Junction for an endless stream of dialogue and in Mr. Darcy’s Dance Challenge uses it for endless insults from Mr. Darcy. Pippin Barr uses it to generate thoughtful frowns and headscratches in It is as if you were playing chess.

Beyond Tracery, there are other templating languages, and many game developers have built their own. Zach Johnson, the creator of Kingdom of Loathing invented a templating language to create game content like combat text and hobo-names (https://youtu.e/X3sqkxedSHQ?t=4m6s). Even the original 1966 ELIZA chatbot used templating in its dialogue generator.

Basic Tracery content in a game

These basic content creation tasks are easy for Tracery! Create a grammar “rpgGrammar” (or several, like “weaponGrammar”, “innNameGrammar” etc if you don’t want to share content between grammars) with your writing. Then call

rpgGrammar.flatten("#innName#") or rpgGrammar.flatten("#NPCName#") or rpgGrammar.flatten("#armorDescription#") or rpgGrammar.flatten("#combatSound#")

to generate whatver content you’ve authored.

Generating parseable data

You may find that you want to generate more complex stuff with a single query, such as generating a sword name and a related description like “General Greenblat’s Blade” “a sword found by General Greenblat while searching for her lost puppy”. In that case, you might have a grammar like

"swordWord": ["blade", "edge", "sword"],

"bowWord": ["aim", "bow", "longbow"],

// This picks out whether we are generating a bow or a sword "setWeaponType": ["[weaponClass:sword][weaponNameType:#swordWord#]","[weaponClass:bow][weaponNameType:#bowWord#]"]

"generateWeaponData": "[character:#name#]#setWeaponType##weaponType# | #character#'s #weaponNameType#" | #character# found this #weaponType# when #doingSomeTask#"]

Expanding “#generateWeaponData#” would generate some data separated by “|” symbols, which you could then split apart with Javascript and use separately in your game.

Generating tagged data

I’ve been working on a hipster chef game, HipChef (for waaayyyy too long). It’s been an exercise in figuring out good tagging practices for using Tracery text in a game while also getting meaning out of that text.

For example, here is a sample of my grammar for generating recipes:

largeFruit : ["kumquat<citrus>", "honeydew<melon>", "bittermelon<melon>", "cherimoya", "peach", "sugar apple", "persimmon", "green apple", "jackfruit", "damson plum", "kiwi", "lime<citrus>", "key lime<citrus>", "meyer lemon<citrus>", "pomegranate", "green apple", "pineapple", "mandarin orange<citrus>", "blood orange<citrus>", "plum", "bosque pear", "fig", "persimmon", "durian", "mango", "lychee"],

preparedMeat : ["duck fat<fowl><game>", "roast duck<fowl><game>", "crispy bacon<pork>", "pancetta<pork>", "salami<pork>", "prosciutto<pork>", "corned beef", "pastrami<beef>", "roast game hen<fowl>", "seared ahi<fish>"],

herb : ["fennel", "cilantro", "mint", "basil", "thyme", "Thai basil", "oregano", "peppermint", "spearmint", "rosemary"],

spice : ["vanilla", "nutmeg", "allspice", "turmeric", "cardamom", "saffron", "cinnamon", "chili powder", "cayenne", "coriander", "black pepper", "white pepper", "ginger", "za’atar"],

"artisanToast": "#bread# with #spice#-spiced #largeFruit# and #meat#"

This might generate some fancy toast descriptions, but in the game, I want to know the game-significant ingredients of this toast. If it has pork and fennel, which are trendy at the moment it scores higher, but if it has duck and melon, which are not, the score is lower. I can search for some ingredients, like “pineapple” by name, but others, like “mint” might be ambiguous. Other queries, like “fowl” or “herb” would need to match many rules.

The fastest way to do this, for me, is to hand-embed these tags inside the content, like kumquat<citrus>. For some content, like herbs and spices, I want to tag all the rules with a single tag. That sounded like work, so I wrote a bit of utility code function autotag(grammar, key, tags) which automatically appends the given tags to all the rules for that key.

Now when the toast generates, it outputs a string like “Ciabatta with turmeric -sprinkled honeydew and roast duck ”. I can strip these tags out with JavaScript, and get and array “spice,melon,fowl,game” (which the game’s rules can use) and a string “Ciabatta with turmeric-sprinkled honeydew and rost duck” which I can display to the player.

You can generate any structure of data this way, even JSON (which you can then use JS’s JSON parser to unpack automatically). In fact, the SVG graphics made with Tracery are an example of this: Tracery generates specially structured text, which a web-page can interpret as image-making commands. But SVG and JSON parsers are just two ways to computationally parse text, you can write your own, as I did with HipChef.

Using world state in Tracery

Your game almost certainly has some world state. For an RPG, this might include the player’s occupation and race, their weapon, their health, a list of skills. Like many games, you might also have a custom name for the player. To use the name in Tracery, you can edit the raw grammar before you use it in Tracery or you can edit the grammar on the fly by pushing new rules to the grammar. This is what Tracery does when you use “[myName:#name#]” in a grammar, but now you’re doing it whenever you want, with whatever data you want.

mygrammar.pushRules(playerName, ["Bobo the Love Clown"]);

mygrammar.pushRules(playerHometown, ["Scranton, NJ"]);

mygrammar.expand("#playerName# left #playerHometown# on an adventure");

A Note: the newest in-progress version of Tracery allows you to pass a world-object to Tracery along with a grammar, so you no longer have to manually update “playerMood”, etc, each time the player’s mood changes and you want to use it in a piece of generated text. But I don’t have an ETA for that.

Seeds: turning commodities into individuals

You’d often want to generate the same content many times in a game. For example, in a text-version of a space game that can generate trillions of planets for you to visit (cough) you might not want to save all the generated tree descriptions, plant descriptions, alien city names, etc. But, if you use some fixed number to set the random seed, you can be certain that Tracery will make the same sequence of “random” choices when picking rules. This will generate the same content, as long as you ask for the content in the same order once you set the seed. For Javascript, I use David Bau’s excellent fix. Conveniently, this requires no changes to Tracery, it just modifies JS’s random number generator.

This is especially fun if you have some huge number represting an in-game commodity, like the population of your city. You can use the index as your seed: “look at citizen #31992” will set the seed to “31992” and each time, the citizen will be “Margarie Tomlinson, age 45, afraid of spiders”.

Further

This may not be as much as your game needs. You may want internal conditionals controlling the grammar’s expansion, or more direct tagging control, such as “give me a conversation tagged ‘aggressive’ and ‘evasive’”. James Ryan’s Expressionist work can do tag-directed generation management to satisfy constraints, and I’ve heard Emily Short is working on something Tracery-like with tags.

I’m also working to include tags and conditionals in the new Tracery, but we’ll see when that ships. Until then, you may get mileage out of the techniques above.

Using Tracery In Larger Systems

Well, this write-up would have come in handy for NaNoGenMo!

I used some variants of a couple of these for my NaNoGenMo project. For my island description generator, I had rules with tags like:

“<+feature do_not_repeat></+><+feature size=small></+>There were two islands there. The distance from one to the other was about one mile. The small island <feature cliffs>rose very abruptly</+> many hundred feet above the sea. At the top was <+feature landmark>a rock with a conical form, which eternally seems on the point of rolling down with a tremendous crash into the sea</+>. The other island was larger, if less remarkable.”

and

“The #inhabitants# use #a_kind_of# <+feature condiment>#condiment#</+> in their cooking.“ 

This produced descriptions like:

They saw The Blue Violet Isle of Eurynome directly ahead, rising like a deep blue cloud out of the sea.

It is a very flat place, made up of several low-lying coral atolls.

The pirates were eager to hunt the mole, which they had great expectations for. Whenever they visit this island, sailors will conduct a kind of ritual, which they claim symbolizes deceit. Around the principle harbor, there were a great many papercrete buildings, forming a small town.

The cuisine of that island is known for something that resembles fresh dijon ketchup.

And the text generator had an additional constraint of only allowing new sentences to be added if they matched the already chosen tags. (Some were complementary, while others were mutually exclusive.) The tags surrounded bits of the text, which were added to the information about the island, so a landmark or kind of cuisine could be referred to by other generators.

Like the character description generator:

“Gull” Sao’s favorite food is fresh dijon ketchup from The Blue Violet Isle of Eurynome. She was dressed in a rusty black suit and wore seafoam green yarn stockings and shoes with brass buckles. She wore a red sash tied around her waist, and, as she pushed back her coat, you might glimpse the glitter of a pistol butt.

Having written this stuff once, I immediately see ways in which Kate’s suggestions above would have improved things. I look forward to other people finding new and better ways to apply Tracery to generating more things.

Laws of institutions Law 0: They will emerge, even if nobody wants them Law 1: They will get captured, regardless of values…

IFTTT, Twitter, vgr


(via http://twitter.com/vgr/status/1316604686242205696)

LowDjo & @zzkt NOW on https://t.co/q3Jp2D61H3 Ethereal electronica rumbling bass squelching synths, an astronaut’s last words,…

IFTTT, Twitter, Lowdjo


(via http://twitter.com/Lowdjo/status/1316464525315575808)

TUNE IN!! https://t.co/q3Jp2D61H3 @zzkt & myself. tunes from Alain Goraguer, Igor Wakhevitch Gong @TheTigerLillies…

IFTTT, Twitter, Lowdjo


(via http://twitter.com/Lowdjo/status/1316457401214791680)

I’ve resisted the retrocomputing rabbit hole thus far, which in very grateful for, but I did just stumbled on some of Bjarne…

IFTTT, Twitter, lukego


(via http://twitter.com/lukego/status/1315222076584849409)

Basic income works

mostlysignssomeportents:


The right has long held that homelessness is a symptom - of a lack of self-control, a lack of foresight, of addiction, mental illness, etc - and therefore the solution to it is training, incarceration, rehab, or rigid discipline.

None of this stuff worked.

For more than a decade, there’s been a more pragmatic approach to homelessness: giving people homes. The housing first movement has repeatedly shown that the best way to make homeless people not homeless is to give. them. a. home.

https://endhomelessness.org/resource/housing-first/

After all, if you are struggling with addiction, mental illness, etc, or if you eed structure in your life, the chaos of not having a home only makes this a thousand times worse.

(Oh, and giving homeless people homes is MUCH cheaper than treating homelessness as a crime)

In a similar vein, the Foundations for Social Change’s New Leaf Project tried simply giving homeless people money (CAD7500). If the right is correct and homelessness is a moral failing, then this should make everything worse (“they’ll just blow it on drugs”).

So this experiment isn’t just a test of the best way to address homelessness; it’s also a test of whether the right’s frame of homelessness as an individual failing is correct, or whether the left’s conception of homelessness as a system problem is right.

The results are definitive: 18 months on, grant recipients found housing a year earlier than the control group; 70% experienced less food insecurity. Money went to food, clothes and rent, with a 39% decline in spending on booze, drugs and cigarettes.

https://static1.squarespace.com/static/5f07a92f21d34b403c788e05/t/5f751297fcfe7968a6a957a8/1601507995038/2020_09_30_FSC_Statement_of_Impact_w_Expansion.pdf

The randomized, controlled study had 115 subjects aged 19-64, all of whom had experienced homelessness for at least six months. On average, they saved CAD1000 of the initial grant over the 12-month study. Participants spent more on their kids and other family members.

The participants’ 12-month, $7500 cash grants amounted to less than half of what it costs to billet a person in a homeless shelter over the same period.

This is both amazing and obvious. The best cure for homelessness is a home. The best cure for poverty is money.

It’s a very powerful argument for a basic income, too.

But not necessarily for a UNIVERSAL basic income.

Here’s the problem with UBI: imagine two people, one of whom is in the 10% or 1% or 0.1% and has all their needs met every month; the other person does not.

Give each of them $1000/month. The poor person experiences a huge difference in their life: they go from not having their needs met - that is, not having a home or food or utilities - to having them met. This is transformative.

What about the rich person? Well, they put the money in a 401(k) or other tax-advantaged savings.

Fast forward a decade.

10 years later, the poor person still has their needs met. They have better health outcomes, their kids have better educational outcomes. SUCCESS!

The rich person, meanwhile, is A QUARTER MILLION DOLLARS RICHER, thanks to the miracle of compound interest.

We have reduced one of the worst aspects of inequality, but inequality itself remains intact, along with all the toxic, corrosive problems it creates.

The system remains rotten to the core.

Can we get the benefits of UBI while still addressing inequality?

Yes. Basic income remains a no-brainer. The problem is universality. We shouldn’t give subsidies to rich people.

But that doesn’t mean we should do means-testing.

Means-testing is humiliating and cruel. Universal services promote solidarity. Means-tested services are a form of Apartheid.

Imagine if you had to prove your poverty before you could go to a public library, or let your kid play in a public park or attend a public school.

But public parks, schools and libraries are a subsidy to the wealthy. We could insist they use country clubs, private schools and subscription libraries instead.

It’s easy to understand how this ends: wealthy people use their political power to defund the public sphere.

The money they’d lose by having to pay for country clubs and private schools wouldn’t reduce their spending power enough to prevent them from accumulating outsized political power.

To do that, we need to tax them.

That’s what taxes are for: to reduce the private sector’s spending power so that when the government creates new money to fund the programs we need, the new money isn’t competing with the money that’s already in circulation for the same goods, which creates inflation.

Governments, after all, don’t pile up our tax money and then send it out again to pay for programs. When currency-issuing governments tax their citizens, they just annihilate that money. When they pay their citizens to do things like build roads, they create new money.

All the money in circulation is money the government has spent, but hasn’t taxed out of existence  All the money you and I have to spend is the government’s deficit. If governments don’t run deficits (if they taxed as much as they spent), there’d be nothing left for us!

Federal taxes don’t pay for programs, but they DO something important. They keep rich people from getting too rich - getting so rich that they can distort our political process.

High tax rates on top wages and wealth  solve the UBI vs BI conundrum without cruel means-testing. If you’re rich, you get the UBI, but you lose it at tax-time; just like you get to use the library for free, but we tax away the money you saved by not going to the bookstore.

All of this also reveals the incompleteness of cash transfers. As powerful as this experiment was, it is even more exciting when combined with Housing First (if you think finding a home in a year is a good outcome, imagine how great getting a home TOMORROW will be!).

Likewise other progressive, universal programs like a Federal Job Guarantee, which would set a TRUE minimum wage - the wage every person who wants to work is guaranteed, irrespective of whether anyone in the private sector wants their labor.

https://pluralistic.net/2020/06/22/jobs-guarantee/#job-guarantee

Without such a guarantee, the true minimum wage is $0 - the price your labor fetches if no one in the private sector has a job for you.

Such universal programs must be complements to social programs like direct transfers, disability benefits, etc, not replacements for them.

When the current crisis is over we’re going to face a massive unemployment and homelessness crisis. The private sector won’t be able to solve it. The right’s version of fixing this is workfare: Build Trump’s wall or starve.

We need a powerful progressive alternative: grounded in caring, universality, and repairing the Earth. Direct transfers, housing first, and a jobs guarantee are policies that work:

  • Need money? Here’s money.
  • Need a home? Here’s a home.
  • Need a job? Here’s a job.

If those sound expensive to you, consider the unbearable cost of mass poverty, homlessness and unemployment.

Image:
Grendelkhan
https://commons.wikimedia.org/wiki/File:Homeless_encampment_near_I-580_onramp_in_Oakland.jpg

CC BY-SA
https://creativecommons.org/licenses/by-sa/4.0/deed.en

The thing is we’re not killing the planet. Planet Earth is 4.4B years old and has seen much worse and yet life recovered. We’re…

IFTTT, Twitter, trekonomics


(via http://twitter.com/trekonomics/status/1315040334896791552)

Mind control is bullshit – that was true of the CIA’s MK-Ultra experiments many years ago, and it’s true of Internet adtech…

mitchwagner:

Mind control is bullshit – that was true of the CIA’s MK-Ultra experiments many years ago, and it’s true of Internet adtech today.

But mind control experiments – done in secret, by people who already convinced themselves of their efficacy – demonstrate the usefulness of the scientific method, with transparency and review by skeptical adversaries.

And mind control is useful in that it helps identify monsters. People who believe in mind control, and are looking to perfect it, are not good people to have around.

(Cory Doctorow/Pluralistic)

Primal widget: the most powerful piece of technology almost everybody carries almost all the time in a given milieu Backwards…

IFTTT, Twitter, vgr


(via http://twitter.com/vgr/status/1313611792715636736)

There’s a kind of debugging I call “flailing”—a desperate, theory-less “jiggling the handle” one can stumble into after extended…

IFTTT, Twitter, andy_matuschak


(via http://twitter.com/andy_matuschak/status/1313321485293871106)

Yeah. Walking. Writing day pages by hand. Wet photography. Astrophotography. Learn to draw. Study calculus. Grow a garden….

IFTTT, Twitter, darthjulian


(via http://twitter.com/darthjulian/status/1312497507985833986)