Commit a3635766f61c2deee28edbd772d8a49c7caaf9e9
Now works SMARKTER
The entire songs.json file has been replaced by multiple plain text files that are parsed as they're called up into callable objects.Zach committed on 5/22/2018, 12:47:05 PM
Parent: 6b6ed9eab3aef0291d80fed717f4d9860cfc19e3
Files changed
index.js | changed |
package-lock.json | changed |
package.json | changed |
songs/context.json | deleted |
songs/datradio-survey.txt | added |
songs/introduction.json | deleted |
songs/discovery.txt | added |
songs/structure.json | deleted |
songs/four-views-into-datradio.txt | added |
songs/greatgatsby.js.txt | added |
songs/introduction.txt | added |
songs/language.txt | added |
songs/some-context.txt | added |
songs/supporting-not-hoarding.txt | added |
songs/the-means-of-distribution.txt | added |
songs/the-playlist-as-offering.txt | added |
songs/the-spotify-alternative.txt | added |
songs/the-structure.txt | added |
stores/songs.js | changed |
stores/songNavigation.js | added |
views/main.js | changed |
views/song.js | changed |
songs.json | deleted |
index.js | ||
---|---|---|
@@ -16,8 +16,9 @@ | ||
16 | 16 | app.use(require('choo-service-worker')()) |
17 | 17 | } |
18 | 18 | |
19 | 19 | app.use(require('./stores/songs')) |
20 | +app.use(require('./stores/songNavigation')) | |
20 | 21 | |
21 | 22 | app.route('/', main) |
22 | 23 | app.route('#songbook', songbook) |
23 | 24 | app.route('#songbook/:song', song) |
package-lock.json | ||
---|---|---|
The diff is too large to show. Use a local git client to view these changes. Old file size: 171973 bytes New file size: 173111 bytes |
package.json | ||
---|---|---|
@@ -37,7 +37,9 @@ | ||
37 | 37 | "babelify": "^8.0.0", |
38 | 38 | "choo-devtools": "^2.5.0", |
39 | 39 | "choo-service-worker": "^2.4.0", |
40 | 40 | "document-ready": "^2.0.1", |
41 | + "lodash": "^4.17.10", | |
42 | + "smarkt": "0.0.6", | |
41 | 43 | "watchify": "^3.11.0" |
42 | 44 | } |
43 | 45 | } |
songs/context.json | ||
---|---|---|
@@ -1,7 +1,0 @@ | ||
1 | -{ | |
2 | - "title": "some context", | |
3 | - "post": [ | |
4 | - "It is 11:50 at night. I am in a mint-green room, with thick muslin curtains, on top of a mountain in New Zealand. But I'm also feeling homesick and wistful and listening to Bright Eyes. I have a window open, to let the wonderfully crisp night air in. Exotic moths keep finding their way into my room, drawn by the light of this computer screen. They crawl for a minute over these words then fly back out again." | |
5 | - ] | |
6 | -} | |
7 | - |
songs/datradio-survey.txt | ||
---|---|---|
@@ -1,0 +1,13 @@ | ||
1 | +title: datradio survey | |
2 | +---- | |
3 | +post: | |
4 | + | |
5 | +Datradio is a single page, filled mostly with text. The left hand side contains a list of playlists you've made or subscribed to. The right is a list of commands you can run to change the appearance of each playlist's page, along with the tracklistings and names and other commands. In the center is a terminal window to enter these commands. | |
6 | +~~* | |
7 | +Within this text window you can also throw in links to dat archives. If that archive includes mp3s, they suddenly fill up the center column and you now have a true blue playlist. You can then run commands to move these freshly imported tracks around, or change the name and appearance of the list. | |
8 | +~~* | |
9 | +After you've made all these changes, you can go into the beaker library of your datradio and see a bunch of changes to review. You review them, publish teh changes, and now all your customization will be saved in the configurations of the site. | |
10 | +~~* | |
11 | +To add a new playlist, you have to have a link to a dat archive. And so, you must first upload a folder of mp3's to your dat. You do this through the beaker library too--you click 'new > import folder' and then choose the folder from your computer. You publish your changes, view this dat archive to copy it's link, then throw this link back into your datradio site. | |
12 | +~~* | |
13 | +In other words, using dat is a balance between the nitty gritty of file management and a simple, two color interface. You are continually aware that everything you're doing lives as some tangible object on your computer, and you can easily make changes to files to see these changes reflected on your site and vice versa. |
songs/introduction.json | ||
---|---|---|
@@ -1,9 +1,0 @@ | ||
1 | -{"title": "introduction", | |
2 | - "post": [ | |
3 | - "In the spring of 2018, I set out on a personal project as part of my work at Enspiral Dev Academy. The goal of the project was to make a successful contribution to a decentralized app. I started the course because I wanted to help build a better solarpunk future, and so I figured I should spend my personal project energy on learning how these awesome future applications are made.", | |
4 | - "The decentralized app I chose was Datradio--a punk2punk music player. Datradio is a site you can access through the Beaker Browser, where you can create playlists on your computer and then share them through the magic, person-powered fabric that is decentralized technology.", | |
5 | - "I made a small pull request to datradio (fixing a small bug), but the creator of the project (@cbglh) told me what would really help is some long-term envisioning of what datradio <em>could</em> be. I thought I would write a couple thoughts on features. Instead, I ended up with this entire site.", | |
6 | -"Datradio exists in an entirely new space, using entirely new technology. I did not want to give any long-term future for it, unless that future vision was also entirely new. I think this technology will allow us to create something truly meaningful for music scenes, and for the future romances of future youth. That is really exciting to me , and so this project might have ended up a bit sincere. But hey, the future <em>is</em> sincere." | |
7 | - ] | |
8 | - } | |
9 | - |
songs/discovery.txt | ||
---|---|---|
@@ -1,0 +1,19 @@ | ||
1 | +title: discovery | |
2 | +---- | |
3 | +post: | |
4 | + | |
5 | +Discovery is important, otherwise you are just making a personal cloud music player--which is not really exciting to me. So how can we include discovery? | |
6 | +~~* | |
7 | +I think we should think jof how discovery worked before algorithms? Those methods worked for millennia, somehow we've always been able to find new music, and playlists today that are helped by playlists are especially bland. | |
8 | +~~* | |
9 | +So how did discovery work before? | |
10 | +~~* | |
11 | +through the ability to dive in and to recommend and through hubs. | |
12 | +~~* | |
13 | +the hub of a venue | |
14 | +~~* | |
15 | +the hub of a record store | |
16 | +~~* | |
17 | +the hub of a message board. | |
18 | +~~* | |
19 | +hubs are natural, but can form anywhere and shift over time. |
songs/structure.json | ||
---|---|---|
@@ -1,8 +1,0 @@ | ||
1 | -{ | |
2 | - "title": "structure", | |
3 | - "post":[ | |
4 | - "something", | |
5 | - "something else", | |
6 | - "a third thing" | |
7 | - ] | |
8 | -} |
songs/four-views-into-datradio.txt | ||
---|---|---|
@@ -1,0 +1,11 @@ | ||
1 | +title: four views into datradio | |
2 | +---- | |
3 | +post: | |
4 | + | |
5 | +The view of the listener, who wants to pick a playlist to have in the background, and personalize their unique datradio fork. This is datradio as boombox, with each link entered into the window like a cassette being added to the deck. | |
6 | +~~* | |
7 | +The view of the artist, who wants to upload their latest album or mix. They are navigating between a file structure and the dat instance, and making sure their specific playlist has the colors, shape, appearance, and tracklisting that they want. They are not concerned with the larger collection, just the shape of this particular datarchive. | |
8 | +~~* | |
9 | +The view of the explorer and voyeur, who is visiting their friend's datradio. They trust their friend's taste, and want to find something new to listen to. So they browse through the friend's list of playlists, and find ones that look interesting. If they click on one, and the first song is great, and the appearance of that playlist is ownderful, then they'll copy the link and add it to their own personal collection. In this case, the view into the friend's collection is likely different from the friend's own view,b ut v. similar. In the way that the tapes you display in your room is different than the walkman you have on you. | |
10 | +~~* | |
11 | +And so there is the view of the curator, who wants to display the playlists they've collected, the albums they've found. This may not be all of their music, and it may look different than their personal view. This is offering their entire collection to the grander chorus. |
songs/greatgatsby.js.txt | ||
---|---|---|
@@ -1,0 +1,11 @@ | ||
1 | +title: greatgatsby.js | |
2 | +---- | |
3 | +post: | |
4 | + | |
5 | +Code is art. It is a beautiful form of human expression, but it has a disadvantage when compared to other art forms: code doesn't get to stick around and resonate. Books get better with time, when the words have sunk in over generations. Music can be ahead of its time, with the full influence of an album finally coming through decades later. But it's rare when we re-appraise source code, rediscover the coder's original intent and the imagination they were trying to manifest. If code is successful, then it gets blotted out by its fanmade sequels, and we only appraise it by how it stands today. | |
6 | +~~* | |
7 | +The web is a work built upon an original piece of code that maybe we misunderstood. And maybe even that original proposal was built upon ideas that Tim Berners-Lee didn't really understand. | |
8 | +~~* | |
9 | +Ted Nelson's Xanadu is a beautiful thought that is now maligned because 'the web won', as if the fact Xanadu was never built negates the strength of its dream. | |
10 | +~~* | |
11 | +Can we learn from past technology and past visions beyond just stating 'where they went wrong'? Can we appreciate the artistic importance of a book even if it never became a movie? |
songs/introduction.txt | ||
---|---|---|
@@ -1,0 +1,11 @@ | ||
1 | +title: introduction | |
2 | +---- | |
3 | +post: | |
4 | + | |
5 | +In the spring of 2018, I set out on a personal project as part of my work at Enspiral Dev Academy. The goal of the project was to make a successful contribution to a decentralized app. I started the course because I wanted to help build a better solarpunk future, and so I figured I should spend my personal project energy on learning how these awesome future applications are made. | |
6 | +~~* | |
7 | +The decentralized app I chose was Datradio--a punk2punk music player. Datradio is a site you can access through the Beaker Browser, where you can create playlists on your computer and then share them through the magic, person-powered fabric that is decentralized technology. | |
8 | +~~* | |
9 | +I made a small pull request to datradio (fixing a small bug), but the creator of the project (@cbglh) told me what would really help is some long-term envisioning of what datradio <em>could</em> be. I thought I would write a couple thoughts on features. Instead, I ended up with this entire site. | |
10 | +~~* | |
11 | +Datradio exists in an entirely new space, using entirely new technology. I did not want to give any long-term future for it, unless that future vision was also entirely new. I think this technology will allow us to create something truly meaningful for music scenes, and for the future romances of future youth. That is really exciting to me , and so this project might have ended up a bit sincere. But hey, the future <em>is</em> sincere. |
songs/language.txt | ||
---|---|---|
@@ -1,0 +1,7 @@ | ||
1 | +title: language | |
2 | +---- | |
3 | +post: | |
4 | + | |
5 | +I will hold fast to language, because in language culture is preserverd. Worldviews are articulated. The world is not made by humans, but our understanding of the world is, as our understanding is carried forth by language. | |
6 | +~~* | |
7 | +The forcing of another lanugage is the forcing of a worldview. colonization no longer requires physical space. colonization can happen entirely in the digital. The suprresion of a culture through the forced assimilation of another. |
songs/some-context.txt | ||
---|---|---|
@@ -1,0 +1,5 @@ | ||
1 | +title: some context | |
2 | +---- | |
3 | +post: | |
4 | + | |
5 | +It is 11:50 at night. I am in a mint-green room, with thick muslin curtains, on top of a mountain in New Zealand. But I'm also feeling homesick and wistful and listening to Bright Eyes. I have a window open, to let the wonderfully crisp night air in. Exotic moths keep finding their way into my room, drawn by the light of this computer screen. They crawl for a minute over these words then fly back out again. |
songs/supporting-not-hoarding.txt | ||
---|---|---|
@@ -1,0 +1,5 @@ | ||
1 | +title: supporting not hoarding | |
2 | +---- | |
3 | +post: | |
4 | + | |
5 | +What is the tool that builds support, and sharing. That doesn't promote hoarding. That doesn't encourage you to grab an entire discography cos you can, but instead to intentionally seed the things you love, and inspire you to create your own too? |
songs/the-means-of-distribution.txt | ||
---|---|---|
@@ -1,0 +1,9 @@ | ||
1 | +title: the means of distribution | |
2 | +---- | |
3 | +post: | |
4 | + | |
5 | +We must own the means of distribution. There are so many diverse physical methods, the style of play is imnportant. Not the way you chooose to distribute that style. Like--people will want to listen to a tape, or a cd, or a record. And, if they big ol' audiophiles, they may appreciate a certain thickness of vinyl or quality of tape. But there are few, if zero, people who would say 'I only listen to bands who press vinyl specifically with VinylCo. Pressing plant. And I only listen to bands who use RCA-DVI for distribution. If that 180gram vinyl came to me through any other means, than fucking NO way will I listen. | |
6 | +~~* | |
7 | +That concept is absurd, but it's a value we've been forced into adapting through digital music. People ultimately want to stream music, or listen to it all on a single device instead of having to swtich out hard packages. But the streaming type of play has become fully intertwined with the distribution methods of that particular streaming file. You choose whether you want to be on spotify or google play or Tidal or deezer or whatever shit, and then you mostly only listen to bands that are licensed there. And if you are a band, you make sure you are distributed with these channels, even if they don't agree with yo ur values, because you want people to be able to hear your music. | |
8 | +~~* | |
9 | +Band sshould own the means for distribution, while still being able to be in the preent moment. Autonomy doesn't have to mean adapting older styles only. You should be able to have a tape, vinyl, cd, mpp3, and streaming and have autonomy over each. We are in the future, that's entirely possible. |
songs/the-playlist-as-offering.txt | ||
---|---|---|
@@ -1,0 +1,11 @@ | ||
1 | +title: the playlist as offering | |
2 | +---- | |
3 | +post: | |
4 | + | |
5 | +You seek out songs and bands to explore your own history and place. The details of a narrative you feel called to own. | |
6 | +~~* | |
7 | +Songs often hold our first experience with an emotion, a tremble, a hue of a color you could name but not see. You are reminded of your personal introduction to these feelings when you hear those songs again. And so our favorite songs are like droplets of amber, containing a reflection of the place you heard them, the time you heard them. They contain a reflection of you. | |
8 | +~~* | |
9 | +And so, the gift of a mixtape is a literal offering of yourself. the mixtape is a form of oral storytelling, like the folktales of old that act as song, lesson, and map all at once. | |
10 | +~~* | |
11 | +The myths that contain maps, the myths whose style and rhythm of telling are important for within that is held a map. |
songs/the-spotify-alternative.txt | ||
---|---|---|
@@ -1,0 +1,9 @@ | ||
1 | +title: the spotify alternative | |
2 | +---- | |
3 | +post: | |
4 | + | |
5 | +We will polish and sculpt datradio and want to share it widely, and the first batch of feedback will include, 'Is this a spotify alternative?' Or 'What are you going to do to really take out spotify?' or 'You're going to need a lot more features if you want to take on itunes.' 'I love this,' they'll say, so that they can add, 'and here' swhat I think you need to be a true soundcloud replacement: discovery, embeddable urls, more licenses, a business plan. | |
6 | +~~* | |
7 | +I wanna urge you to listen to none of this. They are positioning an argument that is absurd and damaging--this notion that we are trying to 'replace' a shitty thing, to assume it's spot, and to do so we should have feature parity with that shitty thing. | |
8 | +~~* | |
9 | +That's like someone listing to the music on the radio and saying, 'All of this music sucks, I guess I'll just have to start a band to make music I wanna hear. And I beter make sure my music recreactes this radio song exactly...it's gotta have hooks, a bridge, an overlong guitar solo. But, y'know, this time <em>i'm</em> the one wanking. |
songs/the-structure.txt | ||
---|---|---|
@@ -1,0 +1,7 @@ | ||
1 | +title: the structure | |
2 | +---- | |
3 | +post: | |
4 | + | |
5 | +This site is a mix of my thoughts on the future, memories, favorite albums, feelings i wanna express but cannot quite articulate, and some practical roadmapping. There is some mention of good features or things to build, but it is largely a collage of tones that I hope gives forth an idea of where datradio could go. | |
6 | +~~* | |
7 | +There are practical thoughts within here, but none are given that linear. This is partly just a personal hurdle, that I have a hard time with 'linear thought', but it's also that I didn't want to narrow the possibilities of datradio by trying to construct a logical argument for an emotional thing. I wanted to give you a prairie, instead of a few blades of glass, carefully arranged in a line. |
stores/songs.js | ||
---|---|---|
@@ -1,30 +1,26 @@ | ||
1 | +var smarkt = require('smarkt') | |
2 | + | |
3 | +var archive = new DatArchive(window.location.host) | |
4 | + | |
1 | 5 | module.exports = store |
2 | 6 | |
3 | 7 | function store (state,emitter) { |
4 | - var songs = require('../songs.json') | |
5 | - state.currentSong = '' | |
6 | 8 | state.songList = [] |
7 | 9 | |
8 | 10 | emitter.on('DOMContentLoaded', function () { |
9 | 11 | emitter.on('changeSong', function (song) { |
10 | 12 | song = song.replace(/\s+/g, '-').toLowerCase() |
13 | + emitter.emit('clearIndex') | |
11 | 14 | emitter.emit('pushState', `/#songbook/${song}`) |
12 | 15 | setTimeout("document.getElementById('track').classList.toggle('change-color')", 1500) |
13 | 16 | }) |
14 | 17 | }) |
15 | - emitter.on('DOMContentLoaded', function (){ | |
16 | - emitter.on('close', function (song) { | |
17 | - state.lastSong = song | |
18 | - emitter.emit('pushState', '/#songbook') | |
19 | - }) | |
20 | - }) | |
21 | 18 | emitter.on('DOMContentLoaded', function () { |
22 | - var archive = new DatArchive(window.location.host) | |
23 | 19 | archive.readdir('songs').then(songs => { |
24 | 20 | songs.map(song => { |
25 | - archive.readFile(`songs/${song}`).then(songObj => { | |
26 | - state.songList= [...state.songList, JSON.parse(songObj)] | |
21 | + archive.readFile(`songs/${song}`).then(songText => { | |
22 | + state.songList = [...state.songList, smarkt.parse(songText)] | |
27 | 23 | emitter.emit('replaceState') |
28 | 24 | }) |
29 | 25 | }) |
30 | 26 | }) |
stores/songNavigation.js | ||
---|---|---|
@@ -1,0 +1,27 @@ | ||
1 | +module.exports = store | |
2 | + | |
3 | +function store (state, emitter) { | |
4 | + state.index = 0 | |
5 | + state.lastSong = '' | |
6 | + | |
7 | + emitter.on('DOMContentLoaded', function () { | |
8 | + | |
9 | + emitter.on('nextPhrase', function () { | |
10 | + state.index += 1 | |
11 | + emitter.emit('render') | |
12 | + }) | |
13 | + emitter.on('prevPhrase', function () { | |
14 | + state.index -= 1 | |
15 | + emitter.emit('render') | |
16 | + }) | |
17 | + emitter.on('clearIndex', function () { | |
18 | + state.index = 0 | |
19 | + emitter.emit('render') | |
20 | + }) | |
21 | + emitter.on('close', function (song) { | |
22 | + state.lastSong = song | |
23 | + emitter.emit('pushState', '/#songbook') | |
24 | + }) | |
25 | + | |
26 | + }) | |
27 | +} |
views/main.js | ||
---|---|---|
@@ -1,6 +1,9 @@ | ||
1 | 1 | const html = require('choo/html') |
2 | -module.exports = () => { | |
2 | + | |
3 | +var TITLE = 'm u s i c v i s i o n s' | |
4 | + | |
5 | +module.exports = (state,emit) => { | |
3 | 6 | return html` |
4 | 7 | <div class='paper-splash'> |
5 | 8 | <h1>music</h1> |
6 | 9 | <h1>visions</h1> |
views/song.js | ||
---|---|---|
@@ -1,23 +1,61 @@ | ||
1 | 1 | const html = require('choo/html') |
2 | +const _ = require('lodash') | |
2 | 3 | |
3 | 4 | module.exports = view |
5 | + | |
4 | 6 | function view (state, emit) { |
5 | 7 | var chosenSong = state.params.song.replace(/-/g,' ') |
6 | 8 | var song = state.songList.find(song => song.title == chosenSong) |
7 | - | |
9 | + var posts = _.split(song.post, '~~*') | |
8 | 10 | return html` |
9 | 11 | <div class='wrapper'> |
10 | 12 | <div id='track' class='track'> |
11 | 13 | <h1>${song.title}</h1> |
12 | 14 | <div id='text'> |
13 | - ${song.post.map(function (post){ return html`<p>${post}</p>`})} | |
15 | + ${posts[state.index]} | |
16 | + ${next()} | |
17 | + ${previous()} | |
14 | 18 | </div> |
15 | 19 | <a href='/#songbook' onclick=${close}>x close x</a> |
16 | 20 | </div> |
17 | 21 | </div> |
18 | 22 | ` |
19 | 23 | |
24 | + function next () { | |
25 | + if ((state.index + 1) < posts.length){ | |
26 | + return html` | |
27 | + <h3 onclick=${nextPhrase}>NEXT</h2> | |
28 | + ` | |
29 | + }else{ | |
30 | + return | |
31 | + } | |
32 | + } | |
33 | + | |
34 | + function previous () { | |
35 | + if (state.index > 0){ | |
36 | + return html` | |
37 | + <h3 onclick=${prevPhrase}>PREV</h2> | |
38 | + ` | |
39 | + }else{ | |
40 | + return | |
41 | + } | |
42 | + } | |
43 | + | |
44 | + function renderPost (post) { | |
45 | + return html` | |
46 | + <p>${post}</p> | |
47 | + ` | |
48 | + } | |
49 | + | |
50 | + function nextPhrase () { | |
51 | + emit('nextPhrase') | |
52 | + } | |
53 | + | |
54 | + function prevPhrase () { | |
55 | + emit('prevPhrase') | |
56 | + } | |
57 | + | |
20 | 58 | function close () { |
21 | 59 | emit('close',song.title) |
22 | 60 | } |
23 | 61 | } |
songs.json | ||
---|---|---|
@@ -1,92 +1,0 @@ | ||
1 | -{"songs": [ | |
2 | - {title: 'introduction', | |
3 | - post: ['In the spring of 2018, I set out on a personal project as part of my work at Enspiral Dev Academy. The goal of the project was to make a successful contribution to a decentralized app. I started the course because I wanted to help build a better solarpunk future, and so I figured I should spend my personal project energy on learning how these awesome future applications are made.', | |
4 | - 'The decentralized app I chose was Datradio--a punk2punk music player. Datradio is a site you can access through the Beaker Browser, where you can create playlists on your computer and then share them through the magic, person-powered fabric that is decentralized technology.', | |
5 | - 'I made a small pull request to datradio (fixing a small bug), but the creator of the project (@cbglh) told me what would really help is some long-term envisioning of what datradio <em>could</em> be. I thought I would write a couple thoughts on features. Instead, I ended up with this entire site.', | |
6 | -'Datradio exists in an entirely new space, using entirely new technology. I did not want to give any long-term future for it, unless that future vision was also entirely new. I think this technology will allow us to create something truly meaningful for music scenes, and for the future romances of future youth. That is really exciting to me , and so this project might have ended up a bit sincere. But hey, the future <em>is</em> sincere.' | |
7 | - ] | |
8 | - }, | |
9 | - {title: 'the structure', | |
10 | - post: [ | |
11 | - "This site is a mix of my thoughts on the future, memories, favorite albums, feelings i wanna express but cannot quite articulate, and some practical roadmapping. There is some mention of good features or things to build, but it is largely a collage of tones that I hope gives forth an idea of where datradio could go.", | |
12 | - "There are practical thoughts within here, but none are given that linear. This is partly just a personal hurdle, that I have a hard time with 'linear thought', but it's also that I didn't want to narrow the possibilities of datradio by trying to construct a logical argument for an emotional thing. I wanted to give you a prairie, instead of a few blades of glass, carefully arranged in a line." | |
13 | - ] | |
14 | - }, | |
15 | - {title: 'some context', | |
16 | - post: ["It is 11:50 at night. I am in a mint-green room, with thick muslin curtains, on top of a mountain in New Zealand. But I'm also feeling homesick and wistful and listening to Bright Eyes. I have a window open, to let the wonderfully crisp night air in. Exotic moths keep finding their way into my room, drawn by the light of this computer screen. They crawl for a minute over these words then fly back out again."]}, | |
17 | - {title: 'the playlist as offering', | |
18 | - post: [ | |
19 | - 'You seek out songs and bands to explore your own history and place. The details of a narrative you feel called to own.', | |
20 | - 'Songs often hold our first experience with an emotion, a tremble, a hue of a color you could name but not see. You are reminded of your personal introduction to these feelings when you hear those songs again. And so our favorite songs are like droplets of amber, containing a reflection of the place you heard them, the time you heard them. They contain a reflection of you.', | |
21 | - 'And so, the gift of a mixtape is a literal offering of yourself. the mixtape is a form of oral storytelling, like the folktales of old that act as song, lesson, and map all at once.', | |
22 | - 'The myths that contain maps, the myths whose style and rhythm of telling are important for within that is held a map.' | |
23 | - ] | |
24 | - }, | |
25 | - { | |
26 | - title: 'datradio survey', | |
27 | - post: ["Datradio is a single page, filled mostly with text. The left hand side contains a list of playlists you've made or subscribed to. The right is a list of commands you can run to change the appearance of each playlist's page, along with the tracklistings and names and other commands. In the center is a terminal window to enter these commands.", | |
28 | - "Within this text window you can also throw in links to dat archives. If that archive includes mp3s, they suddenly fill up the center column and you now have a true blue playlist. You can then run commands to move these freshly imported tracks around, or change the name and appearance of the list.", | |
29 | - "After you've made all these changes, you can go into the beaker library of your datradio and see a bunch of changes to review. You review them, publish teh changes, and now all your customization will be saved in the configurations of the site.", | |
30 | - "To add a new playlist, you have to have a link to a dat archive. And so, you must first upload a folder of mp3's to your dat. You do this through the beaker library too--you click 'new > import folder' and then choose the folder from your computer. You publish your changes, view this dat archive to copy it's link, then throw this link back into your datradio site.", | |
31 | - "In other words, using dat is a balance between the nitty gritty of file management and a simple, two color interface. You are continually aware that everything you're doing lives as some tangible object on your computer, and you can easily make changes to files to see these changes reflected on your site and vice versa."] | |
32 | - }, | |
33 | - { title: 'four views into datradio', | |
34 | - post: ["The view of the listener, who wants to pick a playlist to have in the background, and personalize their unique datradio fork. This is datradio as boombox, with each link entered into the window like a cassette being added to the deck.", | |
35 | - "The view of the artist, who wants to upload their latest album or mix. They are navigating between a file structure and the dat instance, and making sure their specific playlist has the colors, shape, appearance, and tracklisting that they want. They are not concerned with the larger collection, just the shape of this particular datarchive.", | |
36 | - "The view of the explorer and voyeur, who is visiting their friend's datradio. They trust their friend's taste, and want to find something new to listen to. So they browse through the friend's list of playlists, and find ones that look interesting. If they click on one, and the first song is great, and the appearance of that playlist is ownderful, then they'll copy the link and add it to their own personal collection. In this case, the view into the friend's collection is likely different from the friend's own view,b ut v. similar. In the way that the tapes you display in your room is different than the walkman you have on you.", | |
37 | - "And so there is the view of the curator, who wants to display the playlists they've collected, the albums they've found. This may not be all of their music, and it may look different than their personal view. This is offering their entire collection to the grander chorus." | |
38 | - ] | |
39 | - }, | |
40 | - { | |
41 | - title: "language", | |
42 | - post: [ | |
43 | - "I will hold fast to language, because in language culture is preserverd. Worldviews are articulated. The world is not made by humans, but our understanding of the world is, as our understanding is carried forth by language.", | |
44 | -"The forcing of another lanugage is the forcing of a worldview. colonization no longer requires physical space. colonization can happen entirely in the digital. The suprresion of a culture through the forced assimilation of another." | |
45 | - ] | |
46 | - }, | |
47 | - {title: "the means of distribution", | |
48 | - post: [ | |
49 | - "We must own the means of distribution. There are so many diverse physical methods, the style of play is imnportant. Not the way you chooose to distribute that style. Like--people will want to listen to a tape, or a cd, or a record. And, if they big ol' audiophiles, they may appreciate a certain thickness of vinyl or quality of tape. But there are few, if zero, people who would say 'I only listen to bands who press vinyl specifically with VinylCo. Pressing plant. And I only listen to bands who use RCA-DVI for distribution. If that 180gram vinyl came to me through any other means, than fucking NO way will I listen.", | |
50 | -"That concept is absurd, but it's a value we've been forced into adapting through digital music. People ultimately want to stream music, or listen to it all on a single device instead of having to swtich out hard packages. But the streaming type of play has become fully intertwined with the distribution methods of that particular streaming file. You choose whether you want to be on spotify or google play or Tidal or deezer or whatever shit, and then you mostly only listen to bands that are licensed there. And if you are a band, you make sure you are distributed with these channels, even if they don't agree with yo ur values, because you want people to be able to hear your music.", | |
51 | -"Band sshould own the means for distribution, while still being able to be in the preent moment. Autonomy doesn't have to mean adapting older styles only. You should be able to have a tape, vinyl, cd, mpp3, and streaming and have autonomy over each. We are in the future, that's entirely possible." | |
52 | - ] | |
53 | - }, | |
54 | - { | |
55 | - title:'greatgatsby.js', | |
56 | - post:[ | |
57 | - "Code is art. It is a beautiful form of human expression, but it has a disadvantage when compared to other art forms: code doesn't get to stick around and resonate. Books get better with time, when the words have sunk in over generations. Music can be ahead of its time, with the full influence of an album finally coming through decades later. But it's rare when we re-appraise source code, rediscover the coder's original intent and the imagination they were trying to manifest. If code is successful, then it gets blotted out by its fanmade sequels, and we only appraise it by how it stands today.", | |
58 | - "The web is a work built upon an original piece of code that maybe we misunderstood. And maybe even that original proposal was built upon ideas that Tim Berners-Lee didn't really understand.", | |
59 | - "Ted Nelson's Xanadu is a beautiful thought that is now maligned because 'the web won', as if the fact Xanadu was never built negates the strength of its dream.", | |
60 | - "Can we learn from past technology and past visions beyond just stating 'where they went wrong'? Can we appreciate the artistic importance of a book even if it never became a movie?" | |
61 | - ] | |
62 | - }, | |
63 | - { | |
64 | - title: "the spotify alternative", | |
65 | - post:[ | |
66 | - "We will polish and sculpt datradio and want to share it widely, and the first batch of feedback will include, 'Is this a spotify alternative?' Or 'What are you going to do to really take out spotify?' or 'You're going to need a lot more features if you want to take on itunes.' 'I love this,' they'll say, so that they can add, 'and here' swhat I think you need to be a true soundcloud replacement: discovery, embeddable urls, more licenses, a business plan.'", | |
67 | - "I wanna urge you to listen to none of this. They are positioning an argument that is absurd and damaging--this notion that we are trying to 'replace' a shitty thing, to assume it's spot, and to do so we should have feature parity with that shitty thing.", | |
68 | - "That's like someone listing to the music on the radio and saying, 'All of this music sucks, I guess I'll just have to start a band to make music I wanna hear. And I beter make sure my music recreactes this radio song exactly...it's gotta have hooks, a bridge, an overlong guitar solo. But, y'know, this time <em>i'm</em> the one wanking.'" | |
69 | - ] | |
70 | - }, | |
71 | - { | |
72 | - title: "discovery", | |
73 | - post: [ | |
74 | - "Discovery is important, otherwise you are just making a personal cloud music player--which is not really exciting to me. So how can we include discovery?", | |
75 | - "I think we should think jof how discovery worked before algorithms? Those methods worked for millennia, somehow we've always been able to find new music, and playlists today that are helped by playlists are especially bland.", | |
76 | - "So how did discovery work before?", | |
77 | - "through the ability to dive in and to recommend and through hubs.", | |
78 | - "the hub of a venue", | |
79 | - "the hub of a record store", | |
80 | - "the hub of a message board.", | |
81 | - "hubs are natural, but can form anywhere and shift over time." | |
82 | - ] | |
83 | - }, | |
84 | - { | |
85 | - title: "supporting not hoarding", | |
86 | - post: [ | |
87 | - "What is the tool that builds support, and sharing. That doesn't promote hoarding. That doesn't encourage you to grab an entire discography cos you can, but instead to intentionally seed the things you love, and inspire you to create your own too?" | |
88 | - ] | |
89 | -} | |
90 | - ] | |
91 | -} | |
92 | - |
Built with git-ssb-web