1

Journal entry. Written on the night of conception of Rusty Oranges 2. (Unbeknownst to the author.) Intended for private use. Unessential material removed.


9/1/22

Scratched out a stain on the curtain, still unsure what it was. __ spotted it above the laptop screen. It was a distraction, perhaps voluntary. Meditation didn’t work. ____ could __ not focus, __ forgot __ was meditating as __ was meditating. Sank into my thoughts. Which… ___ not sure if ‘tired of’ is the right term but… __ strongly wish the ____ would go. The thoughts themselves I managed to keep enough distance from, __ felt __ could handle them. But the aching _____, it sits in __ teeth, it aches, weighs on __ chest. _ don’t wanna keep going through this _____, it just seems like a waste, endless cycle of _____ and ____, with the smirking self awareness somewhere in __ head that it’s all _______. __ instinctively feel ____ going _____, as if this is the price for all the dopamine running through __ for the preceding _____. 

__ tire of the _____, the fear of _____ (and rightfully so), logistical _____. __  fear that the _____ is clouding ___ perceptions. __ fear it’s something that has nothing to do with the _____ it’s pointed at. __ feel a guilt of burdening _____ with that _____, projecting onto _____ what’s entirely of me. Although this projecting onto _____ is something everyone does all the time to some extent. The _____ that comes with making _____ _____ too much too soon. Smothering the ____ with too much ____. __ just been carrying it on __ back too long and __ eager to feed it to a ____.  Has this skewed my idea of what a _____ is? ____ _ bending who _ ___ to cater to the first _____ to come along?

All this is too heavy, the metaphors, the ramblings. There is a voice that says don’t think too much. And that if __ didn’t ____ on _____, and actually did shit with ___ time __could be proud of rather than _____ (which mightn’t be ____ at all) ___ probably be fine. If ___ were to give advice to someone else telling ___ me this shit what would__ say? “Whatever happens is for the best ____, you can’t force anything, do shit with your ____ that isn’t just about ____. It’s not bad to feel things ______, this is something you already know you ____, it’s a momentary gutter. You haven’t ____ in 9 days, so that’s gonna drive you up the walls too. You’re exploring a really _____ part of _____ in _____ as it is, never mind your deepest _____. Which you’ve been repressing since ______. And now you’re sharing those with the _____ who has the biggest capacity to break _____. Not to be too sore on ____, but maybe you shouldn’t always be throwing your ____ at the first _____ you think might ____ it.” All true, but ___ _____ like most people, and ____pretty tired of it, and ___ genuinely want to be the ____ ____ of _____, or at least live in the process of becoming that. Which involves identifying what __ want and going after it. And that’s all ___ can do. Maybe ____, what would your ____ ____ do in this situation? Shrug it off and make music, ____ ____ ____ ____. Can you do that? __ stumble, __ fidget, ___ get sleepy now, after planning to make music all day, __ motivated the second __ mind is at rest and now that ___ mind is at rest __ get sleepy. Alright then don’t make a whole piece, can you open the DAW and plug in your guitar and look at the screen for 5 minutes without expectation? Yes. Can you do that now? Yes.


2

21/2/22 

From phone notes 11:35-12:03 Recalling the walk from the same morning.


I’ll write for 30 mins or less

Yesterday I wrote on 10 oranges with permanent marker. They were labelled and numbered as follows:

1 NFT smear campaign

2 NFT smear campaign

1 Public domain

2 Public domain RO

1 Bored apes are boring

2 Bored apes are boring

1 What rots is worth the wait

2 What rots is worth the wait

1 Beware of allergies and NFTs

2 Beware of allergies and NFTs


I was strangely nervous leaving the apartment, I took a photo of my feet to document this as the elevator descended to the ground floor. “What the hell am I doing running around placing fruit everywhere?” I began to question my own apolitical stance and doubted if such a stance was possible. Elevator doors open, stepping outside, walking, still thinking. “What the hell am I doing putting fruit everywhere?” First time taking any kind of expression into the physical/ non digital public domain. What’s not an NFT? Something you can smell, taste and touch. Something that rots and decays. Something in the public domain.

Marketing ploy? Trolling? Safe graffiti? Littering.

Place first orange in front of gallery, “Bored Apes Are Boring  No.1.” Take a picture. Try to time pedestrians walking by not to get too close. God forbid I have to engage in small talk, “don’t mind me and my Oranges.”

Continue, next place, gallery of architecture, “What Rots Is Worth The Wait No.(?)” was already out of my bag and in my pocket ready to go. Beautiful, my love of decaying buildings and the beauty of architecture and manmade efforts at attaining immortality before nature claims everything. Both are great, the effort and the inevitable both.

More galleries, perhaps the NFT slogans are too concrete, too trollish. I may want to sellout someday, I realise.

Buy a coffee, continue. More Oranges in my pockets. Nested in a doorway corner, a likely spot for an orange of my own. A discarded coffee cup and inside, an orange peel, next to a small spray painted stencil of a silhouette. Beautiful coincidence. The discarded remains of the products currently in my hands. The image of the death of my coffee and Oranges. I’ll word this more poetically later.

Continue, more galleries left, streets busier, not as self conscious as before, the dopamine must be overriding any insecurities. Seems like an artsy area.

2 Oranges left, leave a “Beware Of Allergies And NFTs” Orange outside an embroidery place. Not that great. (The placement idea, not the embroidery pace.)

One orange left “Public Domain no2”. These were my favourite. Simple. Vaguely political. Question of ownership. I walk, thinking of a good spot. I realise I’m already standing opposite a squat covered in street art and political slogans. “Public Domain No.2” has found a home. Beautiful.

I wonder how long the Oranges will last. Who’ll pick Them up, what dogs or birds will eat Them, what people will step on Them, go about their lives before Them. (Sic)

3

26/2/22

Mastering(,) A Hangover


Masters back, crisp, gonna try naming these puppies:

Track 1- Heart Tick Circle

Track 2- Fully Fungible

Track 3- The Long Blink

Track 4- Jagged With Glitter

Track 5- What Rots Is Worth The Wait

Hidden track- The Longer Blink


What happened yesterday?

I picked up a drum machine from the post office, tried to figure it out for a bit. Had a nap. Recovered. Late afternoon walk. Read a note from my phone written on 21 February 2022 at 12:32 “Audio visual with the words “smell taste touch” on loop with cold static visuals. Smell taste touch video collage of people smelling tasting and touching.” This was probably to build on the Oranges thing.

Tried to find a visual that fits the music. I play one of the tracks on loop and watch old silent era movies. Dr Jekyll and Mr Hyde, The Mechanical Man, Peter Pan. I drag movies to an Ableton project. Music still looping. Scan through for clips of people eating/drinking/touching. More touching than anything else. Very dramatic, very slow. They hadn’t much else to work on other than their movements back then it seemed. Combine clips from the movies. I liked the combined effect of all these people about to embrace in different contexts.


What can NFTs not do. Don’t talk about the pandemic. 


Export video. Import into Max MSP V-synth. Formatting error. The Dr Jekyll Mr Hyde Clips are full screen and centered. The others only show a small square at the top left corner. This causes the screen to black out every few beats. This blacking out gives space for the video feedback module to generate what looks like ghosts about to embrace. The effect is hauntingly beautiful. The merits of fucking up, aesthetic of failure. I think this relates to the essay I did earlier. (Also the silhouette stencil next to the discarded Orange peel.)… *Ring-ring*… _____ calls. Health scare. All clear. Missed call 2 weeks before. Answered from my pocket. No notification. End call. Turn the light off. Lay there clutching my temple with my finger and thumb. Few minutes I give myself. Lights on. Livestream of a _____ artist, _____ soldiers wearing _____ uniforms, ____ friends have already joined ____ _____. Anger and fear. The scale and proximity, or reality, saves ____ from self ____. I get up.


Sketch-a-day, short on time and patience, improvise a 10 minute ambient guitar/live dub on the APC40 from some Rusty Oranges 2 stems. It’s alright. *Ding* Notification. Good feedback received on project: “Honest question, why release it as an EP? And not as 6 tracks at different times?”


I guess I just want to document something and have a body of work that I can be proud of. Maybe I’m stuck in the past. (Pre streaming) I notice I like to put the weakest track at the beginning of projects. Is this to push people away?


Microsoft Team Meeting, beer, friends back home, first catch up in months. Silly-goose-time. 1am, end of meeting. I stare at the visuals again adjusting parameters. Think of ____ editing ____ films when ____ ____.


Today, lay in bed with the drum machine. Fade. Maybe I should write on Oranges again.

4

8/3/22 

From phone notes 17:42-18:13 Recalling the walk on 27/2/22.


I’ll write for 30 minutes or less (2)

3 Public Domain

4 public Domain

3 Bored Apes Are Boring

4 Bored Apes Are Boring

3 What Rots Is Worth The Wait

4 What Rots Is Worth The Wait

1 Fully Fungible

2 Fully Fungible


Walking towards potential first spot, same as last time, just after 10:00 27/2 2022, to replace a spot with “fully fungible”, people walking around though, don’t want to be seen, man walks up the  steps from the metro, walking in front of me, towards the museum, he unlocks and opens up, I’m spooked, I continue on, I try to improvise new spots to place the Oranges.

Get on train, Museum Insel, let’s see, ‘bit touristy, walk around building opposite Berliner Dom, big, grand, extravagant, should have come earlier to avoid people I thought, walk through, find quiet spot, place “Public Domain 3,” take picture, continue.

Across the street, in front of Berliner Dom, Spanish walking tour, sitting down, if I placed it in front it would be a talking point, but I don’t, walk further back, still people around, but not close enough to speak to me, place “Fully Fungible 1.” Picture. Continue.

Alte National gallery, photographer, lots of gear, tripod, setting up, don’t want to photo bomb, see statues, could be important figures, could be memorial, not ideal, corner curb, edge of garden, impossible to not pass on way to gallery. Place “Bored Apes Are Boring 3.” I hear people walking behind me approach as I place it and take a picture, intrigued old man, stops to read it, is amused, I quickly turn and briskly walk away and avoid any interaction. First live audience member I think to myself.

Bode Museum bridge, not overthinking, finding spot in sunlight, what a beautiful day it is. Place “What Rots Is Worth The Wait,” take picture, oh shit, maybe I should keep them all portrait to keep them consistent with each-other, retake, continue.

IFA gallery, “Bored Apes Are Boring,” mind window reflection. Gallery Martin Martins, another “What Rots Is Worth The Wait” near a banana stencil. Im near the KW institute from the week before, the original “What Rots Is Worth The Wait”  is still there, the only one that’s survived, I take picture, people see me take pictures.

Walking a long time with a “Public Domain” in my pocket, people are protesting the attack on Ukraine, a lot of children and elderly, this is beyond political, or the only real political… I’m not sure, I’m in Potsdamer Platz, lots of people around, I stand there watching the flow of people left to right in the direction of Brandenburger Tor, nervous, fiddling with the orange in my pocket, I finally place near the traffic lights at intersection, take photo, leave, that was the hardest yet for some reason.

Walk a few blocks more, a hot air balloon in the distance, one Orange left, “Fully Fungible,” I place near traffic lights, take 2 pictures of the Orange aligning with the hot air balloon. The balloon says “welt,” think that’s “world” in German. One focus is on “Fully Fungible” the other on “welt”. So “fully fungible welt” it isn’t though is it? I ask myself.

Get home, read up more on Ukraine, find out the “Orange Revolution” was a thing and panic about the implication of placing it at a protest without knowing the context but simultaneously pleased with the coincidence. More to write later. (Sic)

5

21/3/22

Rusty Oranges 2 Post Release Analysis


So I made an EP with a guitar and the tapping of a TS cable.


Instruments:

Fender Mexican Stratocaster. (Dull over-used strings)

Behringer UMC180 Audio Interface. (Lovely noise bed.)

TS cable. (Tapped for buzzing sound.)

Ableton audio warping algorithm. 

Ableton stock reverb.

Frequency shifter. (For the tingles.)

LUNGZ Max MSP Instrument. (Ambient noises, I actually made this.)


Context: 

January, lockdown, cold outside, warm inside, thought I’d make sketches with just the guitar. I had little expectations, but I felt very much “in the zone.” Everything flowed, felt natural, I felt compelled to make a release out of it. I worked fast and sought minimal feedback. I wanted to capture the moment with as little outside interference as possible. It was not my intention to make the best music possible but to express myself in as direct a way as possible. I wanted to romanticise or highlight the sounds we take for granted in the recording/mixing process. The noodling in between takes, the glitches, the clicks, the hums. It’s kind of like romantic elevator glitch music… with a minimalist set up. I took this very seriously.


First impression listening post release: got a glimpse of what it sounds like to an outsider. Thought it sounded pretty terrible at first to be honest. As it plays on the more I warm up to the sound. I remember the thought that went into it.


The Tracks:

1 Heart Tick Circle- Ice breaker. EP opener. Palate (palette?) establisheer. Hammering repeatedly the same chord over and over, the introduction of the characters. The droning sub, the tingling glitches. The audio clip click, left in to trigger a reverb that shifts in and out of phase. Heart: organic, romantic. Tick: mechanical, technological. Circle: repetition, loop. Heart Tick Circle: Arctic Circle. Arctic Circle melting, breaking the ice. Opening track. Nice concept in context. Cold as hell. 

2 Fully Fungible- One take. A captured improvisation, in harmony/ chord changes as well as melody. Emotionally dynamic. More narrative than abstract in arrangement. Juxtaposition with the first. Features more chord changes than any previous Rusty Oranges track. Even has a modulation in key. It finishes with a crescendo of glitch and noise. Small but mighty. Slightly theoretical flexing going on with a delicate care of the noise.

3 The Long Blink- Generative. Passive, sleepy. A break from the chord and key changes of the previous, reverts back to one chord but this time with generatively launched harmonic inversions. The spaces between the chords gradually increasing as the track plays out. I thought it sounded like sleep, the cousin of death. (I think Nas said that) The term “the long blink” came from a neuroscience podcast in reference to sleep and death. The sounds of the fingers sliding along the guitar strings are particularly prevalent in this one, beautiful. Nice use of reverb feedback. Others have described this as sounding like ocean waves. Guess it sounds like the tide.

4 Jagged With Glitter- Chill. Pulsing forward, life growing. Welcome break from the reverb/noise of previous track. Guitar playing is definitely tighter, things are coming together. A balance between the previous tracks. The soft guitar, with distorted transients coming in at different parts. (The jagged) With a glittery noise generated from the self-made (did I mention it was self-made already?) Max instrument. (The glitter.) Jagged with glitter, dangerous but enticing. Bittersweet.

5 What Rots Is Worth The Wait- Easily favourite track title of the project. A shower thought. What Rots Is Worth The Wait. Time creates rot, rot requires time, waiting requires time, waiting leads to rot. Life decays and rots over time… which is what gives life its innate value. Love itself, at least the blissful beginning will wane over time, but it’s well worth it. Worth the wait? The aesthetic beauty of decaying fruit. Making peace with loss, of life and love. 2 longer loops playing slightly off. With that triggering reverb around 2:10, like a ghost running its fingers across back of your shoulders. A shiver. Sentimental chords, lifts your heart then cuts it off. Lifts and drops. The cycle of mania and loss, the price of placing value, stuck in the same cycle of reaching out for… or at the… divine that manifests itself in our love for people and things. 

6. (Hidden track) The Longer Blink- The Long Blink intensified. Ambient, noise, glitch, guitar almost totally abstracted. Lovely crackles. Sounds like a broken ship swaying in the storm. Waves crashing on rocks. Didn’t fit with rest of the tracks conceptually but thought it was worthy having out there as a hidden track/ Bandcamp bonus. If ‘sleep is the cousin of death’ (to quote Nas), The Long Blink is sleep and The Longer Blink is death.

6

23/3/22

Class Assignment: How to grow a community? 


(An/My/The) Answer:


Exposure. Inclusivity. Protection and nurture of its current members. 

Integrity, concise communication of common values, sensitivity to individual biases.

Ethos: To build something greater than ourselves as individuals that is, in consequence, mutually beneficial to ourselves as individuals.


Toleration, if not celebration, of character traits which may be considered “flawed” by societal standards.

No tolerance for a conscious lack of awareness of said flaws.

Respect of individual boundaries.

No obligation for contribution.

Be wary of taking more than you give, as this will affect your position in the hierarchy. A higher position is what you inevitably give for what you take.


Know when to receive.


Social hierarchies will develop regardless of democratic principles. However, it should be emphasised that hierarchies are fluid both in structure and in what they pertain/contain. 

An individuals position is never fixed. 


An individuals value as a living organism outweighs any value possibly given by any sort of hierarchal position.

An individuals value as a living organism outweighs any value possibly given by any sort of artistic output. 


Competency and kindness before economic and social capital.

Life before art but a life of art.

7

2/4/22

Technicalities and things learned… in order of remembrance:


-Use an Edding permanent marker, cheaper alternatives don’t write well on Oranges.

-A worn guitar pick feels significantly different than a fresh one.

-Changing guitar strings really does change the brightness of sound.

-Never under estimate the potential suitability of a dry signal.

-Max MSP V synth gives pretty impressive results in a relatively short timeframe.

-Transistors, resistors and integrated circuits are really boring if not immediately fascinating. 

-Building a website is relatively easy, Webflow is a nice balance between depth and ease of use.

-Youtube is full of artist lectures and long form interviews, many of which are NOTEworthy.

-Never underestimate the utility of lessons from people that have nothing to do with music.

-Smelling the fart of your idol does more for your confidence than a kilo of cocaine.

-Website domains can be pretty inexpensive.

-Art funding seems to be a matter of proving your sincerity as much as your capability.

-Starting work without a plan is better than just planning. Working with a plan is even better.

-The sensitivity to detail in Japanese Tea Ceremony is applicable to noise music.

-Flowery language is fun, but not always useful, as are flowers.

-2 beers can be enough to disrupt your internal reward systems for the following day.

-Better to go to museums alone and stay long after you’re bored. Do laps if you have to.

-Better to go to dinner with someone else, don’t stay after you’re bored. Don’t do laps.

-Staying creative during breaks by pursuing other disciplines gives you the break from guilt.

-Your ideas aren’t your ideas. People can’t steal what you don’t own. 

-Mastering can affect the sound of your track more than you realise. 

-Learning the boring stuff legitimises informed chaos.

-You’re not performing, you’re carrying your instrument from A to B.

-You’re not performing, you’re plugging it in.

-You’re not performing, you’re checking the sound.

-We’re all always performing.

-Remember to set reminders for immigration office appointments.

-Be patient with your ears. (Mixing)

-Be protective of your ears. (Dancing)



Things consumed/ Special thanks: 

Huberman Lab podcasts, Mark Leckey talks, The Book of Tea by Kakuzo Okakuro, Nina Simone’s Gum by Warren Ellis, REWE bio 85% dark chocolate, Mint Tea, my Mexican Stratocaster, the personal anecdotes dropped by my teachers and the KW institute for not throwing away my Orange for weeks.


I nap. I dream.

In room full of actors, crawling on the floor, sometimes I get eyes of approval, sometimes of scorn, I soon realise I’m supposed to act, but I’m oblivious as to what a good performance is or when I’m performing at all. This room (like a gray shabby apartment) collapses (instantaneously, illogically, as dreams tend to be) and I’m crawling along a large river banking, hands and knees, water hitting chest, head above. The banking is a straight line, to my left there’s an abandoned  little boat. I reach down and realise the water is only about a foot deep (that’s 30.48cm). I could stand but choose not to. I’m guided along the banking by a voice, male, older with an accent of my hometown. “The beach is war, war is a beach.” I crawl. I’m now at a beach cove. Clowns are doing circular back flips off the cliff face, they appear to defy reality. Another clown approaches, does another circular flip. They’re cool tricks but they’re still stuck on this beach.


I wake and write this down, I’m mindful of projecting conscious interpretations onto subconscious processing. I get up and check if the Orange is still at the KW institute. I need the fresh air.


It’s not there.

8

10/4/22

A Class Presentation


“So ____, would you like to talk to the class a little about your project?”

“Yeah sure,  I had a presentation but I can just wing it… *stands up*

So umm… I uhh… started placing oranges outside places…” 

*Deafening applause*

I then proceeded to recall and recite to the best of my ability the following to the class-


Installation Presentation Slides:

————

Rusty Oranges - Why I put them everywhere.

TIME /PLACE 

Place: Konig Galerie Kreuzberg, a former church. A white wall runs approximately 10 meters in length with a. 7/9 inch ledge. This is where people  queue to get in on busy Sundays.

Time: Sunday 27 March Approx 6:40 Am. Quiet, without disturbance, natural lighting of sunrise combined with the artificial light of the museum lights compliment the Oranges. The blue on orange.

*video*

Materials: 25 Oranges in varied states of decay. Edding permanent marker. Each Orange is marked with a slogan and a number. The slogans aren’t as important as the act of writing on them, or the artist “making their mark.”

Arrangement: Beginning from the end of the wall furthest away from the museum entrance, the freshest Orange is placed. A few paces towards the entrance, a second orange is placed. This continues, the space between the Oranges getting smaller and smaller as the audience member proceeds along the wall. As the space between the Oranges gets smaller the Oranges progress in levels of decay. All Oranges are marked and numbered. Except for the final Orange, which is left unmarked.

But WHY?: The more memories/time we accumulate, the faster time seems to pass. Everything’s fresh, there seems to be plenty of space/time between them, until things seem to exponentially deteriorate. The exponential decrease in space between the Oranges. 

A personal opinion- This deterioration/mortality is what gives life its inherent value. This is expressed in the use of degradable materials.

But Why Here?: I was already putting oranges everywhere before I seen this sculpture by Erwin Wurum inside the Konig. I thought it would be fun to confuse the public by drawing parallels between the Oranges outside and inside. The work of an ‘established’ artist and the work of an unkown/anonymous artist. (Outsider art.)

WHYYY?: Bind 2 Venture “post about artist identity and how you fit into your niche creative community.” “Various contextual elements, politically /ethically.”  

I had to step over people doing _____ to get here. This sculpture is worth 60 grand. I don’t know what exactly but something doesn’t sit right. I’m simultaneously drawn to this world and repelled.

Bottom line: I initially placed oranges instinctively, and analysed the reasons for doing so afterwards. However, the more I search for answers the more question arise. This is really tiring, so it’s probably best I just create the space for the observer to decide… if there even is something to decide.

Morning Thought: More questions. What does it mean for a piece of art to be “legitimised” or validated/ perceived as a piece of art? 

Reputation, career, education, notoriety…?

What separates the oranges outside from inside? Does the building itself and the reputation of the gallery develop a trust in the observer? As if to say “This thing is worth paying attention to.”?

I don’t know.

————

9

9/5/22

Backing up the bullshit / bullshitting the backup.


Can you speak to anyone else?

It isn’t something I’m necessarily in control of. I can only do what is most authentic to myself, but there’s nothing out there so unique that it couldn’t possibly speak to anyone else in the world. All I can do is just put it out there, which I am, so that’s enough to let me sleep at night.


How do you fit into your niche creative community? (Other artists)

To put it bluntly I think there’s always been a tension between being a rocket man, a nark and an ‘art wanker’… but I do see myself contributing to a big bowl of collective ideas. I’ve an excessively open personality type, so I impulsively draw connections and meanings between things, almost to a fault where it’s difficult for me to gel into a specific “scene.” Funnily enough, I am aware there’s a lot of people out there that feel this way, maybe we just haven’t managed to congregate yet. We never really fit in at parties but we’re always the first to dance.


What is the social/political/ethical context of your work?

I’ve thought about this very hard. As much as I like to scurry off to a dark place to create in isolation, creativity is ultimately a communicative act which involves things outside of myself, whether I like it or not. I guess it’s sharing a worldview or imparting what my personal values are.

Musically I was tired of technological flexing, I felt like I was always trying to learn some new technique or a new piece of gear, I wanted to strip everything down to the bare minimum, working intuitively but retaining a technological awareness. So that’s why the second EP was just a guitar and some noises. The guitar, an instrument I’ve played for years but never actually recorded with before, and the noises, well, I think they sound nice… the clicks and crackles and pops… and I think people take them for granted or just get rid of them by default. I guess I could say that sonic decision is reflective of a bigger democratic or utilitarian principle… if I wanna get grandiose about it.

The oranges thing, the installations. It began partly as a kind of exposure therapy. I thought if I was too nervous about approaching a venue and pitching some spectacle of an installation I could surely place an orange outside the building. This evolved into a personal symbol, an extension of why I called the project ‘Rusty Oranges’ in the first place. Then an extra-personal symbol… and a commentary on ownership, value… and what legitimises something as a “piece of art”… it just kind of spiralled or sprouted out from there. Placing meaning into such common-place, degradable objects… and mindfully placing them in public locations. The music, especially the use of noise, was this principle in time, the street installations, the same principle in space. I wanted to emphasise or romanticise the overlooked, the things we take for granted, and place them in a position of divinity. Essentially democratising our inner hierarchies of perceived value. It’s an idea I intuitively feel is very important  but it’s also very a much a stretch for me to put into words. I realised during the process that this is actually a solid reason for doing an art piece in the first place. 


--

Can you outline the technical challenges in your work?

A key principle in the music was “leaning into limitations” so this bypasses a lot of frustrations. Noisy sound floor? Make it the ambience. Can’t get effects chains to work? Try a dry signal. Audio clips are clicking? Make the click louder and feed it through a reverb. Can’t get a venue? Make street installations. Can’t play the same thing twice? Don’t. Aspect ratio error? It’s the aesthetic, ‘The Aesthetic Of Failure.’ It’s technological judo. The basis of all glitch art, noise music, the distorted guitar… there’s no wrong notes. To give a more detailed example: Ableton’s stock LFO doesn’t always save modulation parameters. So for the generative piece, “The Long Blink,” I recorded it to a resample track as a test run so there’s an abrupt cut off. I closed the project and when I reopened it everything was reset. I couldn’t change or tweak anything it was lost forever all I had was that resample with the abrupt cut off. Conceptually this worked beautifully, as the piece was structured as a kind of generative digitalised William Basinski effect. I discovered a Dean Blunt track a few weeks later that had a very aggressive cut off. These are big names, if I they can do it I can sure as hell do it.


Are there other uses for your work, ideas that stretch beyond your music career?

During the conception of most of these ideas I was in a state of mania. I would think they were my own, sitting in that flow state. It’s only afterwards I would see similar things and patterns in art I had already consumed or been exposed to years prior. I can only speculate I was subconsciously picking up details that would influence later decisions. I think this applies to anyone that is exposed to my work or anyone else’s work for that matter. Even if they don’t ‘like' it or ‘get’ it, whose to say a few months or years from now it won’t affect some decision that makes a huge impact. I notice things pop up all the time and I think “how the hell did that get in there?” Everything we do has a ripple effect, or a viral effect, whether it goes ‘viral’ or not. I don’t know… academia.


How are you working independently towards increasing variety in your practice? 

A poor attention span can be a guiding light. I religiously go to all sorts of museums and expose myself to all sorts of mediums. Installations and conceptual stuff… how an artist can manipulate space by the placement of objects. Or the combination of sound and visuals and the effect that has. Transmitting art as something to be experienced rather than owned… it’s relatively difficult to buy a download of an installation. I often find it next to impossible to describe the effect of installations verbally. Very much a “had to be there” kind of thing. What else… reconciling electronic music production with jazz guitar… reading a lot of fiction and incorporating that into musical concepts, track titles etc… Literature in general seems to play a big role in the symbolism that runs through everything. Poetry, movies, graffiti, memes… I’m fascinated by the things and principles that ties all these together. Even something like Web design… I’ll ask myself: How can I turn a UI into as head melting an experience as a conceptual installation? How do I turn a press release into a piece of literature? It’s all alchemy… or reverse alchemy depending how you look at it.


-

How does your work utilise creative risk?

This whole project seems to be an exercise in risk, or an acceptance of fault at least. The music is essentially glitch jazz. It’s an act of improvisation. I began to document the placement of oranges without knowing where it would lead…it could have lead nowhere. I learned all the tricks thrown at me from previous workshops… sound design, instrument design… yet consciously chose a minimal approach. This may negatively impact peoples perceptions or put some people off. Although personally I don’t often connect with art that dictates a certain perspective, I have to admit that the act of leaving space for interpretation also leaves space for gross misinterpretation… or even worse still: the assumption that there is nothing to interpret. To risk the thought to be all for nought.


How does your work explore the relationship between artefact, context and audience?

Artefact: The Orange, I write on the oranges so suddenly they become “my work”. They decay, if they didn’t they’d become redundant. They are left in context to either be removed or rot… taken or destroyed. At the mercy of the audience. They go from being “my work” to something else… I’m not sure what that something else is though. I guess that’s work for someone else.

Audience: Perceives the artefact in the context. The audience has to be in context to see the artefact. The specifity (that’s not a word) of their view is dependent on their placement. At mercy of the context.

Context: There is big context and small context. (I just made up these terms.) Big context is the space in which the artefact is placed. (Public streets/internet.) Small context is the perspective in which the artefact is viewed by the audience. (Do they glance as they ride by on a bicycle? Do they stop enraptured before the oranges? Do they ignore the oranges visually but physically throw them in the bin before the birds get here?) There’s physical perspective and psychological perspective. Physical being format and physical positions. Psychological being internal reference points and personal biases. 


It’s normal to wonder what the hell is this shit (artefact) but the idea of the blog (big context) was to impart my biases onto the reader/listener (audience) for a little bit of (small) context. 


This project is a tree in a very big forrest. There’s many trees like it but this one is mine.

https://www.youtube.com/playlist?list=PLYfG3fmeEMEW-EbQC9RJDE5HZqsQrHm7w


<p class="text" data-text="/A Violin tuned DEADnstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groupFAKE HTML CODEroup_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one MANUFACTURED PROCESSointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partiaREVEAL THE PROCESShile (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n LEAN INTO LIMITATIONS/n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) SYMBOL EXPORT->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_aTECHNOLOGICAL JUDOup_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n echo('Hello World');"></p><p class="text" data-text="/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + THIS LAND IS MY LAND THIS LAND IS YOUR LAND- 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /nART WANKER       } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORTlloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups =ART WANKER{ .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize +N/* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n echo('Hello World');"></p><p class="text" data-text="/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n echo('Hello World');"></p><p class="text" data-text="/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngdDOOMSCROLLINGroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n THE GREEN LINE OF THE FIRST VIDEO WAS UNINTENTIONAL, THE SECOND WAS INTENTIONAL, THIS LEGITIMIZES THE FIRSTgroup_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + ; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= N /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n echo('Hello World');"></p><p class="text" data-text="/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n THE BACKGROUND IS DIGITAL NOISE OF THE VISUAL COVER ARTnblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n Everything's dear if you don't want it what does that meangoto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n DUALITY OF MAN SIR} /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + ; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n echo('Hello World');"></p><p class="text" data-text="/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groupsDOOMSCROLLINGDOOMSCROLLINGDOOMSCROLLING = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + N; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *)CAPTAIN BEE FART, BUZZ BUZZ MIRROR MAN NAM RORRIMGFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n  BLOG POSTS ARE BACK TO FRONT     group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n echo('Hello World');"></p><p class="text" data-text="/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n  GOOD THINGS COME TO THOSE WHO BREAKreturn NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + Vladimir Nabokov, Warren Ellis, Dean Blunt, Mark Leckey, Joseph Beauys, Stanley Kubrick, Max Neuman, Rabih Mroue, Captain Beefheart, The Magic Band, Cocktail Party Effect, Appleblim, Ryoji Ikeda, John Fahey, Crass, William Basinski, Charles Bukowski, William Blake, James Joyce, Jan Jelinek, Sleaford Mods, John Lee Hooker, Tyson Fury, spinach pastries, mint tea, dark chocolate, pho, tofu, decaf coffee, brotchen, vegan ravioli, hummus, sun-dried tomatoes, chilli olives, rocket, peanut butter, falafel, flensburger pilsner, yellow tail merlot, club mate, tinned chilli sin carne, drinkable tap water, a quiet place to work.; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + ; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n echo('Hello World');"></p><p class="text" data-text="/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / ; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(stITS NOT WHAT YOU THINKo) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_allTOWERING VULNERABILITYoc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize +; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; /n    group_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALL) /n        group_info->blocks[0] = group_info->small_block; /n    else { /n        for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n    WORM FOOD           goto out_undo_partial_alloc; /n I CANT REMEMEBR WHERE I FOUND THE FAKE CODE   group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n        free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n/nstruct group_info init_groups = { .usage = ATOMIC_INIT(2) }; /n /nstruct group_info *groups_alloc(int gidsetsize){ /n    struct group_info *group_info; /n    int nblocks; /n    int i; /n /n /n    nblocks = (gidsetsize + NGROUPS_PER_BLOCK - 1) / NGROUPS_PER_BLOCK; /n    /* Make sure we always allocate at least one indirect block pointer */ /n    nblocks = nblocks ? : 1; CALORIES REINCARNATEDgroup_info = kmalloc(sizeof(*group_info) + nblocks*sizeof(gid_t *), GFP_USER); /n    if (!group_info) /n        return NULL; /n /n    group_info->ngroups = gidsetsize; /n    group_info->nblocks = nblocks; /n    atomic_set(&group_info->usage, 1); /n /n    if (gidsetsize <= NGROUPS_SMALREWARD THE CURIOUS_info->small_block; /n    else { /n   NOT WHAT YOU FEAR  for (i = 0; i < nblocks; i++) { /n            gid_t *b; /n            b = (void *)__get_free_page(GFP_USER); /n            if (!b) /n                goto out_undo_partial_alloc; /n            group_info->blocks[i] = b; /n        } /n    } /n    return group_info; /n /n /nout_undo_partial_alloc: /n /n    while (--i >= 0) { /n /n CURIOSITY IS THE REWARD    free_page((unsigned long)group_info->blocks[i]); /n /n    } /n /n    kfree(group_info); /n /n    return NULL; /n /n} /n /n /n /nEXPORT_SYMBOL(groups_alloc); /n /n /n /nvoid groups_free(struct group_info *group_info) /n /n{ /n /n    if (group_info->blocks[0] != group_info->small_block) { /n /n        int i; /n /n        for (i = 0; i < group_info->nblocks; i++) /n /n echo('Hello World');"></p> its not half bad down here

contact: rustyorangesmusic@gmail.com