diff --git a/readme.md b/readme.md index 1e6c661..f7a0454 100644 --- a/readme.md +++ b/readme.md @@ -1,27 +1,34 @@ # Basant +I collect a lot of information. Basant is a tool to help me refine, reflect and understand the vast troves of data I generate. +Think of it like a unified front end to all the data sources I have. From these vairous outputs can be created, with the end goal eventually being a matrix bot to publish to The Feed, a front page showing latest changes, and of course, my website. +I'd like to be able to draw 'links' or annotations between the tags I use across various different pieces of software, +These are the tools I use construct the space. + The map is not the teritory. -I have carved out a small sancturary. It is available through my website: anish.lakhwara.com -These are the tools I use construct the space. - ## Architecture -2 input sources, kitaab & streams -These sources are then built into HTML files -Those HTML files are published to my website +Basant is made from various different data sources, each with their own folder. +Each data source will have a `grab`, `build`, raw & output. `grab` gets the raw data, and `build` makes it into HTML +Depending on the data source, there may be additional partial/ asset/ media/ folders in the directory. I'm not yet sure how to cascade these and build upwards. +Some of those HTML files get published + +For better ideas look into [HPI](https://github.com/karlicoss/hpi) and how it's structured ### Inputs -Inputs should be seperated into a sub-module (for each?) so that they can be built heremetically through nixOS - -kitaab requires a local copy, stored in /home/anish/vimwiki/ -there needs to be a .vimwiki_tags file there (which can be built in vimwiki using :VimwikiRebuildTags) -It'll grab the relevant files, censor them, and then add them to the raw/ directory under public-kitaab +`kitaab-public` requires a local copy, stored in /home/anish/vimwiki/ +there needs to be a .vimwiki_tags file there (which can be built in vimwiki using `:VimwikiRebuildTags`; how to automate this?) +It'll grab the relevant files, censor them, and then add them to raw/ +`kitaab` should run the same thing, but without the filtering and censoring streams is a big TODO - wallabag - shaarli - rss +- kobo +- tasks +- habits ### Build TODO @@ -34,21 +41,3 @@ and it saves it to output TODO some nix concotion that grabs the HTML and publishes it to anish.lakhwara.com -## Old overview (src/inputs/kitaab/) -Helps make my Kitaab public by grabbing Kitaab, filtering & censoring it, and then passing it through to an SSG to make HTML out of a markdown page. -makePublic.py -- the whole filter pipeline - -TagHelper.py -- Reads the .vimwiki_tags file that is generated by vimwiki - -tree.py -- builds a tree out of all the links using dfs - -network-builder.py -- uses the network from tree.py to visualize links - -tag-fixer.py -- old script used to fix problem tags (1 character tags) -- (TODO) tags that are case sensitive -- (TODO) entries that have no tags diff --git a/src/builder/kitaab-builder b/src/builder/kitaab-builder deleted file mode 160000 index db06fd7..0000000 --- a/src/builder/kitaab-builder +++ /dev/null @@ -1 +0,0 @@ -Subproject commit db06fd7890f3348cd56112434b9368545ad2afa6 diff --git a/src/inputs/kitaab/makePublic.py b/src/inputs/kitaab/makePublic.py deleted file mode 100644 index 8b0944d..0000000 --- a/src/inputs/kitaab/makePublic.py +++ /dev/null @@ -1,100 +0,0 @@ -#! /usr/bin/env python3 -# Various methods of grabbing files from Kitaab based on their ctags as generated by vimwiki -# censor - burn all mentions of this word wherever it appears in Kitaab -# filter - leave names in tact but do not link to relevant documents -# create - list in an index file for website -from os import listdir, mkdir -from os.path import isfile, join -import shutil -import random -import TagHelper -import censor as cen -from icecream import ic - -## TODO: generalize based on headings(?) in index.wiki - -censor = cen.listBad -filter = ["Dream", "Gratitude", "Review", "jrnl", "piracy", "work", "job", "debt", "people"] -OUTPUTPATH = '../../../raw/public-kitaab/' -INPUTPATH = '/home/anish/vimwiki/' -#TODO create = ... - -def loadNetwork(path='network.json'): - # Loads the network.json file - with open(path, 'r') as f: - everything = json.load(f) - return everything - -def setNetwork(everything): - # Everything is loaded from the network.json file - keys = set(everything.network()) - values = set(everything.values()) - everything = network + values - return everything - -def filterFiles(AllFileList): - toFilter = filter + censor - tagList = TagHelper.getAllTags() - doNotTakeFiles = set() - for mask in toFilter: - try: - doNotTakeFiles.update(tagList[mask]) - except KeyError: - print("Key not found: {}".format(mask)) - return AllFileList - doNotTakeFiles - -def censorNetwork(network): - # Takes network as a set - for c in censor: - if c in network: - network.add(generateBlocks(len(c) + random.randint(0, 5))) - network.remove(c) - return network - -def generateBlocks(size=1): - # Generates a length size unicode string that is formed from blocks: - charList = ['▐', '░', '▒', '▓', '▔', '▕', '▖▗', '▘▙', '▚', '▛', '▜', '▝', '▞', '▟'] - ret = "" - while size > 0: - size = size - 1 - rand = random.randint(0,13) - ret = ret + charList[rand] - return ret - -def createIndexNode(network): - pass - -def copyFiles(fileList): - try: - mkdir(OUTPUTPATH) - except FileExistsError: - pass - for f in fileList: - try: - shutil.copy(INPUTPATH + f, OUTPUTPATH) - except FileNotFoundError: - print("Could not copy file {}:".format(INPUTPATH + f)) - -def censorFiles(): - outputBasePath = './output/' - for fileName in listdir(OUTPUTPATH): - fileName = OUTPUTPATH + fileName - newFile = "" - print("Censoring: {}".format(fileName)) - with open(fileName, 'r') as f: - for line in f.readlines(): - for c in censor: - line = line.replace(c, generateBlocks(len(c))) - newFile = newFile + line - with open(fileName, 'w') as f: - for line in newFile: - f.write(line) - -if __name__=='__main__': - #network = loadNetwork() - #network = censorNetwork(network) - AllFiles = TagHelper.getAllFiles() - FilteredFiles = filterFiles(AllFiles) - copyFiles(FilteredFiles) - print("Censoring files...") - censorFiles() diff --git a/src/inputs/kitaab/network-builder.py b/src/inputs/kitaab/network-builder.py deleted file mode 100644 index 4d2cde1..0000000 --- a/src/inputs/kitaab/network-builder.py +++ /dev/null @@ -1,25 +0,0 @@ -import json -import networkx as nx -import pygraphviz - -def loadJson(file): - with open(file, 'r') as f: - return json.load(f) - -def makeNetwork(json): - G = nx.DiGraph() - for (key, value) in json.items(): - G.add_nodes_from([key] + value) - G.add_edges_from([(key, v) for v in value]) - return G - -def makeAGraph(graph): - G = nx.nx_agraph.to_agraph(graph) - G.draw("nop.png", prog="nop") - -if __name__ == "__main__": - OUTFILE = 'network.json' - json = loadJson('network.json') - graph = makeNetwork(json) - with open(OUTFILE, 'w') as f: - json.dump(f, makeAGraph(graph)) diff --git a/src/inputs/kitaab/tag-fixer.py b/src/inputs/kitaab/tag-fixer.py deleted file mode 100644 index 5d7d1ad..0000000 --- a/src/inputs/kitaab/tag-fixer.py +++ /dev/null @@ -1,178 +0,0 @@ -#! /usr/bin/env python3 - -from ctags import CTags, TagEntry -import sys -from icecream import ic -import os -import shutil -import fileinput - -def loadTagFile(path='/home/anish/vimwiki/.vimwiki_tags'): - # Available file information keys: - # opened - was the tag file successfully opened? - # error_number - errno value when 'opened' is false - # format - format of tag file (1 = original, 2 = extended) - # sort - how is the tag file sorted? - # author - name of author of generating program (may be empy string) - # name - name of program (may be empy string) - # url - URL of distribution (may be empy string) - # version - program version (may be empty string) - try: - tagFile = CTags(path) - return tagFile - except: - print("No tagfile at {}".format(path)) - sys.exit(1) - -bad_tags = [('Public', 'public'), ('Travel', 'travel'), ('jrl', 'jrnl'), ('Kitaab', 'kitaab'), ('Dream', 'dream'), ('Story', 'story'), ('Review', 'review'), ('private', 'priv'), ('ideas', 'idea'), ('quotes', 'quote'), ('rocks', 'rock'), ('sec', 'cybsec'), ('sealight.services', 'sealight')] -bad_tags_only = [x[0] for x in bad_tags] - -def replaceBadTags(tagFile): - # no higher order function sadness - # this does the same thing as loopThrough but runs a different function - # (loop through looks for single character tags) - # We look for any tag in the list and replace it - entry = TagEntry() - tag = tagFile.next(entry) - tagErrors = set() - print(bad_tags_only) - while tag: - tag = entry['name'].decode('utf-8') - if tag in bad_tags_only: - tagErrors.add(entry['file']) - tag = tagFile.next(entry) - return tagErrors - -def loopThrough(tagFile): - # Available TagEntry keys: - # name - name of tag - # file - path of source file containing definition of tag - # pattern - pattern for locating source line (None if no pattern) - # lineNumber - line number in source file of tag definition (may be zero if not known) - # kind - kind of tag (none if not known) - # fileScope - is tag of file-limited scope? - - # Note: other keys will be assumed as an extension key and will - # return None if no such key is found - ''' Entries that are less than 1 character in length are errors - Returns a set containing of all the files with errors in their tags''' - entry = TagEntry() - tag = tagFile.next(entry) - tagErrors = set() - errorTagNames = set() - while tag: - if len(entry['name']) <= 1: - tagErrors.add(entry['file']) - errorTagNames.add(entry['name']) - tag = tagFile.next(entry) - ic(errorTagNames) - return tagErrors - -def fixBadTags(errors): - ''' More lack of higher order function sadness - same as fixErrors, but not really - ''' - fileBase = '/home/anish/vimwiki/' - for v in errors: - print("Fixing {}...".format(v)) - fileName = fileBase + getFileName(v) - newFile = "" - with open(fileName, 'r') as f: - newFile = newFile + f.readline() - line = f.readline() - # bad and ungly - for bad_tag in bad_tags: - line = line.replace(bad_tag[0], bad_tag[1]) - newFile = newFile + line - for line in f.readlines(): - newFile = newFile + line - with open(fileName, 'w') as f: - for line in newFile: - f.write(line) - print("Written new file...") - print() - print(newFile) - - -def fixErrors(errors): - ''' Replaces :: with :, which seems to be the error for many of the tags ''' - fileBase = '/home/anish/vimwiki/' - for v in errors: - print("Fixing {}...".format(v)) - fileName = fileBase + getFileName(v) - newFile = "" - with open(fileName, 'r') as f: - for line in f.readlines(): - line = line.replace(":]:]:", "") - line = line.replace(":[:[:", "") - line = line.replace("G:r:a:t:i:t:u:d:e:", ":grat:") - line = line.replace(":J:o:u:r:n:a:l:", ":jrnl:") - line = line.replace(":R:e:v:i:e:w:", ":review:") - line = line.replace(":T:r:a:v:e:l:", ":travel:") - line = line.replace(":D:r:e:a:m:", ":dream:") - line = line.replace("%date", "\n%date") - line = line.replace("{date}", createDateStringFromFile(v)+"\n\n") - line = line.replace("{title}", "{title}\n") - line = line.replace(" :", ":") - line = line.replace("::", ":") - line = line.replace(" :", ":") - line = line.replace("::", ":") - newFile = newFile + line - with open(fileName, 'w') as f: - for line in newFile: - f.write(line) - print("Written new file...") - print() - print(newFile) - -def createDateStringFromFile(error): - file = getFileName(error).replace("jrnl/", "").replace(".wiki", "") - dateConverted = file.split('-') # create date and time - dateConvertedSplit = list(dateConverted[0]) # splite date - dateConvertedSplit.insert(2, '-') # add - between year and month - dateConvertedSplit.insert(5, '-') # add - between month and day - dateConvertedSplit.insert(0, '20') # add 20 to year - dateConverted[0] = "".join(dateConvertedSplit) # make date a string - dateConverted[1] = dateConverted[1][:2] + ":" + dateConverted[1][2:] # add colon in between hour and minute - dateConverted = " ".join(dateConverted) # make date and time a string - return dateConverted - -def printErrorFiles(errors): - fileBase = '/home/anish/vimwiki/' - for v in errors: - fileName = fileBase + getFileName(v) - print("Reading {}...".format(v)) - with open(fileName, 'r') as f: - #f.readline() - ic(f.readline()) - -def listTags(tagFile): - entry = TagEntry() - tag = tagFile.next(entry) - allTags = set() - while tag: - tag = entry['name'].decode('utf-8') - allTags.add(tag) - tag = tagFile.next(entry) - return allTags - -def getFileName(f): - return str(f, encoding="utf-8") - -def getBackupFiles(errors): - fileBase = '/home/anish/vimwiki/' - backupBase = '/home/anish/vimwiki/jrnl/' - for files in errors.values(): - for f in files: - f = getFileName(f) - print("Moving {} from backup".format(f)) - shutil.copy(backupBase + f, fileBase + f) - -if __name__=='__main__': - tagFile = loadTagFile() - #ic(tagFile) - #errors = replaceBadTags(tagFile) - #fixBadTags(errors) - print(sorted(listTags(tagFile))) - #ic(errors) - #getBackupFiles(errors) diff --git a/src/inputs/kitaab/tree.py b/src/inputs/kitaab/tree.py deleted file mode 100644 index 605ab45..0000000 --- a/src/inputs/kitaab/tree.py +++ /dev/null @@ -1,120 +0,0 @@ -#! /usr/bin/env python -# -*- coding: utf-8 -*- -from icecream import ic -import json - -"""network-vimwiki.py -Create site map for vimwiki. -Must run script under vimwiki directory. - -Example: - output network map to network.json - dfsvw.py - -Python version: 3""" -import sys -import re - -linkRE = re.compile(r'\[\[([^\\\]|#]+)(?:#[^\\\]|]+)?(?:\|([^\\\]]+))?\]\]', re.UNICODE) - -def probeLink(s): - """ - >>> probeLink(' abc') - [] - >>> probeLink(' [[]]') - [] - >>> probeLink(' [[abc]] [[abc|123]] ') - [('abc', ''), ('abc', '123')] - >>> a, b = probeLink(' [[中文1|中文2]]')[0]; print a, b - 中文1 中文2 - >>> probeLink(' [[abc|abc 123]]') - [('abc', 'abc 123')] - """ - ret = linkRE.findall(s) - return [(a, b) for a, b in ret] - - -def probeAllLink(fn): - """extract all link in a wiki file""" - try: - lst = [] - print(fn) - fp = open(fn) - for line in fp.readlines(): - l = probeLink(line) - lst.extend(l) - except IOError: - print("cannot open",sys.stderr) - except UnicodeDecodeError: - lst = [] - fp = open(fn, encoding="utf-16BE") - for line in fp.readlines(): - l = probeLink(line) - lst.extend(l) - return lst - - -def outputNode(link, name, level): - """output one wiki node, level for vimwiki tree hierarchy""" - """ Unused """ - prefix = " " * 4 * level - if not name: - name = link - dct = {"prefix":prefix, "link":link, "name":name} - if sys.stdout.isatty(): - fmt = "{prefix}{name}" - else: - if link == name: - fmt = "{prefix}[[{name}]]" - else: - fmt = "{prefix}[[{link}|{name}]]" - print(fmt.format(**dct)) - -def addNode(link, node, name, graph): - """ adds a node to the dictionary that tracks edges""" - if name: - node = name - if link in graph.keys(): - graph[link].add(node) - else: - graph[link] = {node} - -def bfs(index): - """breath first search on vimwiki - keep seen and unseen to track which files to search - ugly loops instead of recursive setup """ - seen = set() - unseen = [index] - graph = {} - filecount = 0 - while 1: - try: - link = unseen.pop(0) - except IndexError: - print("Search complete...") - ic(filecount) - return graph - seen.add(link) - ret = probeAllLink(link + '.wiki') - for (node, name) in ret: - addNode(link, node, name, graph) - if not node in seen: - unseen.append(node) - filecount = filecount + 1 - ic(filecount) - ic(seen) - -def transformGraph(graph): - for key, value in graph.items(): - graph[key] = list(value) - return graph - -if __name__ == "__main__": - graph = bfs('index') - print("Transforming Graph...") - graph = transformGraph(graph) - print("Transform Complete...") - ic(graph) - print("Outputting file") - with open('network.json', 'w+') as out: - json.dump(graph, out) diff --git a/src/kitaab-public/asset/android-icon-144x144.png b/src/kitaab-public/asset/android-icon-144x144.png new file mode 100644 index 0000000..d6f1a82 Binary files /dev/null and b/src/kitaab-public/asset/android-icon-144x144.png differ diff --git a/src/kitaab-public/asset/android-icon-192x192.png b/src/kitaab-public/asset/android-icon-192x192.png new file mode 100644 index 0000000..10230ea Binary files /dev/null and b/src/kitaab-public/asset/android-icon-192x192.png differ diff --git a/src/kitaab-public/asset/android-icon-36x36.png b/src/kitaab-public/asset/android-icon-36x36.png new file mode 100644 index 0000000..a969a10 Binary files /dev/null and b/src/kitaab-public/asset/android-icon-36x36.png differ diff --git a/src/kitaab-public/asset/android-icon-48x48.png b/src/kitaab-public/asset/android-icon-48x48.png new file mode 100644 index 0000000..02d652d Binary files /dev/null and b/src/kitaab-public/asset/android-icon-48x48.png differ diff --git a/src/kitaab-public/asset/android-icon-72x72.png b/src/kitaab-public/asset/android-icon-72x72.png new file mode 100644 index 0000000..9fad473 Binary files /dev/null and b/src/kitaab-public/asset/android-icon-72x72.png differ diff --git a/src/kitaab-public/asset/android-icon-96x96.png b/src/kitaab-public/asset/android-icon-96x96.png new file mode 100644 index 0000000..4523876 Binary files /dev/null and b/src/kitaab-public/asset/android-icon-96x96.png differ diff --git a/src/kitaab-public/asset/apple-icon-114x114.png b/src/kitaab-public/asset/apple-icon-114x114.png new file mode 100644 index 0000000..89d54f3 Binary files /dev/null and b/src/kitaab-public/asset/apple-icon-114x114.png differ diff --git a/src/kitaab-public/asset/apple-icon-120x120.png b/src/kitaab-public/asset/apple-icon-120x120.png new file mode 100644 index 0000000..c8c5460 Binary files /dev/null and b/src/kitaab-public/asset/apple-icon-120x120.png differ diff --git a/src/kitaab-public/asset/apple-icon-144x144.png b/src/kitaab-public/asset/apple-icon-144x144.png new file mode 100644 index 0000000..d6f1a82 Binary files /dev/null and b/src/kitaab-public/asset/apple-icon-144x144.png differ diff --git a/src/kitaab-public/asset/apple-icon-152x152.png b/src/kitaab-public/asset/apple-icon-152x152.png new file mode 100644 index 0000000..7a41592 Binary files /dev/null and b/src/kitaab-public/asset/apple-icon-152x152.png differ diff --git a/src/kitaab-public/asset/apple-icon-180x180.png b/src/kitaab-public/asset/apple-icon-180x180.png new file mode 100644 index 0000000..f36e8e0 Binary files /dev/null and b/src/kitaab-public/asset/apple-icon-180x180.png differ diff --git a/src/kitaab-public/asset/apple-icon-57x57.png b/src/kitaab-public/asset/apple-icon-57x57.png new file mode 100644 index 0000000..73de85b Binary files /dev/null and b/src/kitaab-public/asset/apple-icon-57x57.png differ diff --git a/src/kitaab-public/asset/apple-icon-60x60.png b/src/kitaab-public/asset/apple-icon-60x60.png new file mode 100644 index 0000000..c7330af Binary files /dev/null and b/src/kitaab-public/asset/apple-icon-60x60.png differ diff --git a/src/kitaab-public/asset/apple-icon-72x72.png b/src/kitaab-public/asset/apple-icon-72x72.png new file mode 100644 index 0000000..9fad473 Binary files /dev/null and b/src/kitaab-public/asset/apple-icon-72x72.png differ diff --git a/src/kitaab-public/asset/apple-icon-76x76.png b/src/kitaab-public/asset/apple-icon-76x76.png new file mode 100644 index 0000000..cb7d29c Binary files /dev/null and b/src/kitaab-public/asset/apple-icon-76x76.png differ diff --git a/src/kitaab-public/asset/apple-icon-precomposed.png b/src/kitaab-public/asset/apple-icon-precomposed.png new file mode 100644 index 0000000..e08c6c5 Binary files /dev/null and b/src/kitaab-public/asset/apple-icon-precomposed.png differ diff --git a/src/kitaab-public/asset/apple-icon.png b/src/kitaab-public/asset/apple-icon.png new file mode 100644 index 0000000..e08c6c5 Binary files /dev/null and b/src/kitaab-public/asset/apple-icon.png differ diff --git a/src/kitaab-public/asset/favicon-16x16.png b/src/kitaab-public/asset/favicon-16x16.png new file mode 100644 index 0000000..8b65f33 Binary files /dev/null and b/src/kitaab-public/asset/favicon-16x16.png differ diff --git a/src/kitaab-public/asset/favicon-32x32.png b/src/kitaab-public/asset/favicon-32x32.png new file mode 100644 index 0000000..0a38bad Binary files /dev/null and b/src/kitaab-public/asset/favicon-32x32.png differ diff --git a/src/kitaab-public/asset/favicon-96x96.png b/src/kitaab-public/asset/favicon-96x96.png new file mode 100644 index 0000000..4523876 Binary files /dev/null and b/src/kitaab-public/asset/favicon-96x96.png differ diff --git a/src/kitaab-public/asset/favicon.ico b/src/kitaab-public/asset/favicon.ico new file mode 100644 index 0000000..2846df3 Binary files /dev/null and b/src/kitaab-public/asset/favicon.ico differ diff --git a/src/kitaab-public/asset/main.css b/src/kitaab-public/asset/main.css new file mode 100644 index 0000000..21d7112 --- /dev/null +++ b/src/kitaab-public/asset/main.css @@ -0,0 +1,294 @@ +/* RESET CSS BY ANDY BELL */ + +/* Box sizing rules */ +*, +*::before, +*::after { + box-sizing: border-box; +} + +/* Remove default margin */ +body, +h1, +h2, +h3, +h4, +p, +figure, +blockquote, +dl, +dd { + margin: 0; +} + +/* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */ +ul[role='list'], +ol[role='list'] { + list-style: none; +} + +/* Set core root defaults */ +html:focus-within { + scroll-behavior: smooth; +} + +/* Set core body defaults */ +body { + min-height: 100vh; + text-rendering: optimizeSpeed; + line-height: 1.5; +} + +/* A elements that don't have a class get default styles */ +a:not([class]) { + text-decoration-skip-ink: auto; +} + +/* Make images easier to work with */ +img, +picture { + max-width: 100%; + display: block; +} + +/* Inherit fonts for inputs and buttons */ +input, +button, +textarea, +select { + font: inherit; +} + + +/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */ +@media (prefers-reduced-motion: reduce) { + html:focus-within { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } +} + + +/* CHISAI CSS BY THOMASORUS */ + +:root { + --text: black; + --background: white; + --dots: radial-gradient(currentColor 1px, transparent 1px), radial-gradient(currentColor 1px, transparent 1px); + --ratio: 1.5; + --s-5: calc(var(--s-4) / var(--ratio)); + --s-4: calc(var(--s-3) / var(--ratio)); + --s-3: calc(var(--s-2) / var(--ratio)); + --s-2: calc(var(--s-1) / var(--ratio)); + --s-1: calc(var(--s0) / var(--ratio)); + --s0: 1rem; + --s1: calc(var(--s0) * var(--ratio)); + --s2: calc(var(--s1) * var(--ratio)); + --s3: calc(var(--s2) * var(--ratio)); + --s4: calc(var(--s3) * var(--ratio)); + --s5: calc(var(--s4) * var(--ratio)); + font-size: calc(1rem + 0.5vw); +} + +@media (prefers-color-scheme: dark) { + :root { + --text: white; + --background: black; + --dots: radial-gradient(white 1px, transparent 1px), radial-gradient(white 1px, transparent 1px); + } +} + +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + background-color: var(--background); + color: var(--text); +} + +header { + width: 100%; + text-align: center; + font-size: var(--s1); + padding-top: var(--s3); +} + +header nav { + display: flex; + justify-content: space-around; + +} + +header a { + color: var(--text); + text-transform: uppercase; + font-weight: 700; +} + +a { + color: var(--text); + text-decoration: none; +} + +nav em { + font-size: var(--s0); +} + +h1 { + font-size: var(--s2); + color: var(--text); + line-height: 1; +} + +h2 { + font-size: var(--s1); + color: var(--text); +} + +h3 { + font-size: var(--s0); + color: var(--text); +} + +main { + padding: var(--s0); + padding: var(--s-1); + background-image: var(--dots); + background-size: calc(4 * 1px) calc(4 * 1px); + background-position: 0 0, calc(2 * 1px) calc(2 * 1px); +} + +article { + background-color: var(--background); + padding: var(--s0); +} + +main a { + color: var(--text); + border-bottom: 2px solid var(--text); +} + +main date { + display: block; +} + +li { + line-height: 1.3; +} + +ul>*+* { + margin-top: var(--s0); +} + +.container { + --space: var(--s1); + display: flex; + flex-direction: column; + justify-content: flex-start; + max-width: 60ch; + margin-left: auto; + margin-right: auto; + padding: 0 var(--s0); +} + +.flow>*+* { + margin-top: var(--s0); +} + +.flow-small>*+* { + margin-top: var(--s-3); +} + + +.flow-large>*+* { + margin-top: var(--s3); +} + +.logo { + border-radius: 100%; + margin: 0 auto; + max-width: 180px; + padding: 15px; +} + +.youtube { + position: relative; + padding-bottom: 56.25%; + height: 0; + overflow: hidden; +} + +.youtube>iframe { + position: absolute; + width: 100%; + height: 100%; + left: 0; + right: 0; +} + +.listing { + padding: 0; + list-style: none; + line-height: 1; +} + +.listing h3 { + font-weight: 300; +} + +.listing small { + display: block; + font-size: var(--s-1); +} + +.listing>*+* { + margin-top: var(--s-2); +} + + +@media (max-width: 520px) { + + :root { + --s1: var(--s0); + } + + .logo { + max-width: 120px; + padding: 5px; + } +} + +/* +@media (prefers-color-scheme: dark) { + :root { + --purple-light: rgb(172, 16, 239); + --purple-light-transparent: rgba(172, 16, 239, 0.7); + --purple-medium: #5927e0; + --purple-strong: #3f1ca0; + --background: #111; + --text: hsl(221, 19%, 66%); + --title: white; + --article-shadow: black; + --link: var(--purple-medium); + } +} + +@media (prefers-color-scheme: light) { + :root { + --purple-light: rgb(172, 16, 239); + --purple-light-transparent: rgba(172, 16, 239, 0.7); + --purple-medium: #5927e0; + --purple-strong: #3f1ca0; + --background: white; + --text: #6b7280; + --title: black; + --article-shadow: #333; + --link: var(--purple-light-transparent); + } +} */ \ No newline at end of file diff --git a/src/kitaab-public/asset/ms-icon-144x144.png b/src/kitaab-public/asset/ms-icon-144x144.png new file mode 100644 index 0000000..d6f1a82 Binary files /dev/null and b/src/kitaab-public/asset/ms-icon-144x144.png differ diff --git a/src/kitaab-public/asset/ms-icon-150x150.png b/src/kitaab-public/asset/ms-icon-150x150.png new file mode 100644 index 0000000..1d14f1a Binary files /dev/null and b/src/kitaab-public/asset/ms-icon-150x150.png differ diff --git a/src/kitaab-public/asset/ms-icon-310x310.png b/src/kitaab-public/asset/ms-icon-310x310.png new file mode 100644 index 0000000..7ebf4b5 Binary files /dev/null and b/src/kitaab-public/asset/ms-icon-310x310.png differ diff --git a/src/kitaab-public/asset/ms-icon-70x70.png b/src/kitaab-public/asset/ms-icon-70x70.png new file mode 100644 index 0000000..35d1650 Binary files /dev/null and b/src/kitaab-public/asset/ms-icon-70x70.png differ diff --git a/src/kitaab-public/asset/rss.png b/src/kitaab-public/asset/rss.png new file mode 100644 index 0000000..ce1d6ff Binary files /dev/null and b/src/kitaab-public/asset/rss.png differ diff --git a/src/kitaab-public/asset/social.png b/src/kitaab-public/asset/social.png new file mode 100644 index 0000000..ce1d6ff Binary files /dev/null and b/src/kitaab-public/asset/social.png differ diff --git a/src/kitaab-public/build/README.md b/src/kitaab-public/build/README.md new file mode 100644 index 0000000..6c125b6 --- /dev/null +++ b/src/kitaab-public/build/README.md @@ -0,0 +1,39 @@ +![Chisai logo](medias/chisai_square.png) + +# Chīsai! + +> A small website generator, editable and hosted on github, with automatic deployment! + +## Purpose and mission + +Chīsai is aimed at empowering people who need a free solution to have their own small space on the internet without falling into the CMS install and maintenance crazyness. All content is in markdown files, in folders, and the user can edit, upload images and host on github. + +Chīsai answers three very important things for me when it comes to websites: + +1. It should be easy to modify by someone else +2. It should be durable and long lasting +3. Each person should own the code of its website + +## Who can use it? + +Chīsai is a free to use by individuals and organizations that do not operate by capitalist principles. For more information see the [license](LICENSE) file. + +## How does it work? + +You can see a demo [here](https://thomasorus.github.io/Chisai/). It's quite simple: + +- Each section is a folder with files named as the dates of their publication. +- Each section has it's parent section that regroups all the files inside. +- All sections 5 latest entries are regrouped on the home page with a link to see the full content. +- Content is edited using the Markdown syntax (the same you can find on Discord or Slack). +- Edit the content (create folders, files, edit files) directly on github, here! + +That's all! + +## How to use it? + +See the [wiki](https://github.com/Thomasorus/Chisai/wiki) for extensive guides for everything! + +## Can I self-host it? + +Yes of course! Chisai only produces HTML. You can add the generated website on your own server. Even better: if your server has Python, you can rebuild the website direcly on your server. Be careful that you might have to reconfigure some things to make it work. diff --git a/src/inputs/kitaab/TagHelper.py b/src/kitaab-public/build/TagHelper.py similarity index 95% rename from src/inputs/kitaab/TagHelper.py rename to src/kitaab-public/build/TagHelper.py index d45df46..d278f17 100644 --- a/src/inputs/kitaab/TagHelper.py +++ b/src/kitaab-public/build/TagHelper.py @@ -59,13 +59,10 @@ def makeDictFromTags(tagFile, key='name', value='file'): def getAllFiles(): # Returns a set containing all the files we wish to make public - return makeSetFromTags(loadTagFile()) + return makeSetFromTags(loadTagFile(tagFile)) def getAllTags(): # Returns a dictionary with: # - key as tag titles # - values as files that have the key in their tags return makeDictFromTags(loadTagFile()) - -if __name__ == '__main__': - print(getAllTags().keys()) diff --git a/src/kitaab-public/build/build.py b/src/kitaab-public/build/build.py new file mode 100644 index 0000000..7576ab4 --- /dev/null +++ b/src/kitaab-public/build/build.py @@ -0,0 +1,476 @@ +from jinja2 import Environment, FileSystemLoader +import TagHelper +import argparse +import glob +import os +import platform +import re +import shutil +import subprocess +import sys +from datetime import datetime +import pathlib + +# Default encoding +encoding = 'utf-8' + +# Import local files +mistune = __import__('mistune') +config = __import__('config') + + +# Activating the renderer +renderer = mistune.Renderer() +markdown = mistune.Markdown(renderer=renderer) + + +# Checking for dev command +parser = argparse.ArgumentParser() +parser.add_argument( + "-p", "--prod", help="Prints the supplied argument.", action="store_true") +args = parser.parse_args() + +# Declaring build url that will be used in several parts of the app +build_url = config.relative_build_url +if args.prod: + build_url = config.absolute_build_url + +def generate_navigation(template_nav): + file_loader = FileSystemLoader('') + env = Environment(loader=file_loader) + template = env.get_template(template_nav) + + index_tags = TagHelper.getAllTags()['dev'] + output = template.render(index_urls=[f.split(".")[0] for f in index_tags]) + return output + +# Generates html files in the site folder, using the entries and the template. +def generate_html_pages(site_folder, entries, template, sub_pages_list, template_nav): + for entry in entries: + page_template = template.replace('page_title', entry['title']) + page_template = template.replace('page_tags', str(entry['tags'])) + + # Checking if the page is root of a folder + if entry["file"] == "index": + + # If root page + # Concatenate the content of the index page with the listing of sub-pages + # Remove "page_date" from template + # Replaces "page_body" with the page content in the template + entry["pageContent"] += sub_pages_list + page_template = page_template.replace('page_date', "") + page_template = page_template.replace( + 'page_body', entry['pageContent']) + else: + # If content page + # Replaces "page_body" with the page content in the template + # Replaces "page_date" with the page date in the template + page_template = page_template.replace( + 'page_body', entry['pageContent']) + page_template = page_template.replace( + 'page_date', "%s" % (entry['date'])) + + # Creating navigation + url_link = build_url + url_text = entry['parent_text'] + + nav_html = generate_navigation(template_nav) + #if not entry["parent_url"]: + # # If index page, return to the home + # url_link = build_url + #else: + # # If content page, return to parent page + # url_link = build_url + entry['parent_url'] + + #nav_template = open(template_nav, 'r').read() + #nav_html = nav_template.replace("link_url", url_link) + #nav_html = nav_html.replace("text_url", url_text) + #nav_html = nav_html.replace("go_back", config.go_back) + page_template = page_template.replace('page_navigation', nav_html) + + # Replaces all occurrences of build_url in the template files (assets, urls, etc) + page_template = page_template.replace('build_url', build_url) + + page_template = page_template.replace( + 'name_of_site', config.name_of_site) + page_template = page_template.replace( + 'site_meta_description', config.site_meta_description) + page_template = page_template.replace( + 'twitter_name', config.twitter_name) + + # Checking if content folder exists + folderExists = os.path.exists(site_folder+entry['folder']) + # If not, create it + if config.flat_build == False: + if not folderExists: + os.mkdir(site_folder+entry['folder']) + + # Write the HTML file + slug_file = site_folder + entry['slug'] + with open(slug_file, 'w', encoding=encoding) as fobj: + fobj.write(page_template) + + print("All pages created!") + + +# Get title by parsing and cleaning the first line of the markdown file +def get_entry_title(page): + pageContent = open(page, 'r') + textContent = pageContent.read() + textContent = textContent.splitlines() + textContent = textContent[0] + textContent = textContent.replace('# ', '') + if '%title' in textContent: + textContent = textContent.replace('%title','') + else: + if 'index' not in page: + textContent = page.split('/')[1].rstrip('.wiki') + + return textContent + + +# Get the slug from the markdown file name +def get_entry_slug(page): + slug = page.split("/")[-1] + slug = re.sub('\.wiki$', '', slug) + if slug: + return slug + else: + return '' + + +def style_iframes(page): + regex = r"<\/iframe>" + matches = re.finditer(regex, page, re.MULTILINE) + + for matchNum, match in enumerate(matches, start=1): + match = match.group() + iframe = "
%s
" % match + page = page.replace(match, iframe) + return page + +# Get a list of the tags in the page +def get_tags(page): + regex = r":.*:" + matches = re.finditer(regex, page, re.MULTILINE) + ret = [] + + for match in matches: + match = match.group() + match = match.rstrip(":") + match = match.lstrip(":") + match = match.split(":") + ret = ret + match + ret = " ".join(ret) + return ret + + +# Checks for local images links in markdown and add the build_url and medias_folder url +def fix_images_urls(page): + regex = r"\!\[.*\]\((.*)\)" + matches = re.finditer(regex, page, re.MULTILINE) + + for matchNum, match in enumerate(matches, start=1): + for groupNum in range(0, len(match.groups())): + captured_group = match.group(groupNum + 1) + if captured_group[:4] != "http": + full_url = build_url + config.medias_folder + captured_group + page = page.replace(captured_group, full_url) + return page + + +def fix_amp(page): + page = page.replace(" & ", " & ") + return page + +def fix_wiki_links(page, path): + regex = r"\[\[([\s\S]+?\|?[\s\S]+?)\]\]" + matches = re.finditer(regex, page, re.MULTILINE) + for matchNum, match in enumerate(matches, start=1): + for groupNum in range(0, len(match.groups())): + captured_group = match.group(groupNum + 1) + link_elem = captured_group.split("|") + if len(link_elem) > 1: + full_url = "" + link_elem[0].strip() + "" + else: + if config.flat_build: + full_url = "" + link_elem[0].strip() + "" + else: + full_url = "" + link_elem[0].strip() + "" + page = page.replace(match[0], full_url) + return page + +# From the list of files, creates the main array of entries that will be processed later + + +def create_entries(pages): + fullContent = [] + for page in pages: + tempPage = {} + + # Process the page with dedicated functions + path = clean_path(page) + title = get_entry_title(page) + + markdown_text = open(page, 'r').read() + markdown_text = style_iframes(markdown_text) + markdown_text = fix_images_urls(markdown_text) + markdown_text = fix_wiki_links(markdown_text, path["folder"]) + tags = get_tags(markdown_text) + pageContent = markdown(markdown_text) + + # Create the page object with all the informations we need + tempPage['slug'] = path["slug"] + tempPage['file'] = path['file'] + tempPage['folder'] = path["folder"] + tempPage['parent_url'] = path['parent_url'] + tempPage['parent_text'] = path['parent_text'] + tempPage['date'] = path['date'] + tempPage['iso_date'] = path['iso_date'] + tempPage['title'] = fix_amp(title) + tempPage['pageContent'] = pageContent + tempPage['tags'] = tags + + fullContent.append(tempPage) + + return fullContent + + +# Copy assets to production folder +def move_files(site_folder, path): + assets = os.listdir(path) + if assets: + for asset in assets: + asset = os.path.join(path, asset) + if os.path.isfile(asset): + shutil.copy(asset, site_folder+path) + else: + print("No assets found!") + + +# Transforms the file locations to an array of strings +def clean_path(path): + path_clean = re.sub('\.wiki$', '', path) + items = [] + if(platform.system() == 'Windows'): + items = path_clean.split('\\') + else: + items = path_clean.split('/') + + path_items = { + "slug" : None, + "date" : None, + "folder": items[0], + "file": items[1] + } + + # xx-xx-xxxx = xx-xx-xxxx.html + # xx-xx-xxxx-string or string = string.html or /folder/string.html + + # Checking if the file has a date + regex = r"[0-9]{6}-[0-9]{4}" + match = re.match(regex, path_items["file"]) + has_date = False + + if match: + has_date = True + + if has_date: + if match[0] != path_items["file"]: + path_items["date"] = match[0] + path_items["slug"] = path_items["file"].replace(match[0] + "-", "") + ".html" + else: + path_items["date"] = match[0] + path_items["slug"] = path_items["file"] + ".html" + + # Converts the EU date to US date to allow page sorting + if config.date_format == "EU": + path_items["iso_date"] = str(datetime.strptime(path_items["date"], '%y%m%d-%H%M')) + if config.date_format == "ISO": + path_items["iso_date"] = str(datetime.strptime(path_items["date"], '%Y-%m-%d')) + else: + path_items["slug"] = path_items["file"] + ".html" + #last_edit = str(subprocess.check_output('git log -1 --format="%ci" ' + path, shell=True)).replace("b'", "").replace("\\n'", '') + # get last edited time from system + try: + last_edit = os.path.getmtime('/home/anish/'+path) + last_edit_iso = datetime.fromtimestamp(last_edit) + except ValueError: + last_edit_iso = datetime.now() + except FileNotFoundError: + last_edit_iso = datetime.now() + + if config.date_format == "EU": + path_items["date"] = str(last_edit_iso.strftime("%d %b, %y")) + else: + path_items["date"] = str(last_edit_iso) + + path_items["iso_date"] = str(last_edit_iso) + + if config.flat_build == False: + path_items["slug"] = path_items["folder"] + "/" + path_items["slug"] + + if path_items["file"] == "index": + path_items["parent_url"] = "" + path_items["parent_text"] = config.home_name + if config.flat_build: + path_items["slug"] = path_items["folder"] + ".html" + else: + if config.flat_build: + path_items["parent_url"] = path_items["folder"] + ".html" + path_items["parent_text"] = path_items["folder"].replace("-", " ").capitalize() + else: + path_items["parent_url"] = path_items["folder"] + path_items["parent_text"] = path_items["folder"].replace("-", " ").capitalize() + + + return path_items + + +# Generate the list of sub pages for each section +def generate_sub_pages(entries, num, folder, title): + + # Sort entries by date using the iso_date format + entries.sort(key=lambda x: x["iso_date"], reverse=True) + + # Take n number of entries (5 for the home, all for the sub-section pages) + selected_entries = entries[:num] + + # Create the list + sub_page_list = "" + + # If a title is necessary, use the folder name + if title: + title = "

%s

" % folder.capitalize() + sub_page_list = title + sub_page_list + if config.flat_build: + sub_page_link = build_url + folder + ".html" + else: + sub_page_link = build_url + folder + sub_page_link_html = "" % sub_page_link + config.see_all + "" + sub_page_list += sub_page_link_html + + return sub_page_list + + +# Creates the home page using home.md +def create_home_page(template, site_folder): + + # Read the file and add "content_list" as a future replacement point for sub page listing + html = "content_list" + + # Replace template strings with content + template = template.replace('page_title', config.home_name) + template = template.replace('page_body', html) + template = template.replace('build_url', build_url) + template = template.replace('page_navigation', "") + + return template + + +# Create RSS Feed +def create_rss_feed(rss_entries, rss_template, rss_item_template, site_folder): + template = open(rss_template, 'r').read() + itemTemplate = open(rss_item_template, 'r').read() + rss_entries.sort(key=lambda x: x["iso_date"], reverse=True) + + rss_items = "" + for rss_entry in rss_entries: + entry_template = itemTemplate + entry_template = entry_template.replace( + 'rssItemTitle', rss_entry["title"]) + entry_template = entry_template.replace('rssItemUrl', build_url + + rss_entry["slug"]) + entry_template = entry_template.replace( + 'rssItemDate', rss_entry["iso_date"]) + entry_template = entry_template.replace( + 'rssItemContent', rss_entry["pageContent"]) + rss_items += entry_template + + template = template.replace('name_of_site', config.name_of_site) + template = template.replace('site_meta_description', + config.site_meta_description) + template = template.replace('build_url', build_url) + template = template.replace('date_build', str( + datetime.now().date())) + template = template.replace('rss_content', rss_items) + + slug_file = site_folder + "feed.xml" + with open(slug_file, 'w', encoding=encoding) as fobj: + fobj.write(template) + + return + + +def generate_website(): + print('Welcome to the builder!') + + # If build folder exists delete it + if os.path.exists(config.build_folder): + shutil.rmtree(config.build_folder) + + # Make new folders + os.makedirs(config.build_folder + config.assets_folder) + os.makedirs(config.build_folder + config.medias_folder) + + # Get main html template + template = open(config.template_file, 'r').read() + + # Create home page + home_page = create_home_page(template, config.build_folder) + + rss_entries = [] + + for folder in ['vimwiki']: + pages = glob.glob(folder + '**/*.wiki', recursive=True) + entries = create_entries(pages) + sub_pages_list = generate_sub_pages( + entries, len(entries), folder, False) + + # For each section, create a short listing of sub pages and add it to the home page + home_pageSubList = generate_sub_pages(entries, 5, folder, False) + home_page = home_page.replace('content_list', home_pageSubList + + "content_list") + home_page = home_page.replace('page_date', "") + + generate_html_pages(config.build_folder, entries, template, + sub_pages_list, config.template_nav) + + for entry in entries: + rss_entries.append(entry) + + # Move the assets + move_files(config.build_folder, config.assets_folder) + move_files(config.build_folder, config.medias_folder) + + # Once all sections have been processed, finish the home page + # Removes the "content_list" in the partial + home_page = home_page.replace('content_list', "") + home_page = home_page.replace('name_of_site', config.name_of_site) + home_page = home_page.replace('site_meta_description', + config.site_meta_description) + home_page = home_page.replace( + 'twitter_name', config.twitter_name) + + slug_file = config.build_folder + "index.html" + with open(slug_file, 'w', encoding=encoding) as fobj: + fobj.write(home_page) + + # Create RSS File + create_rss_feed(rss_entries, config.rss_template, + config.rss_item_template, config.build_folder) + + +# Triggers the website build +generate_website() diff --git a/src/kitaab-public/build/config.py b/src/kitaab-public/build/config.py new file mode 100644 index 0000000..b6eaa63 --- /dev/null +++ b/src/kitaab-public/build/config.py @@ -0,0 +1,19 @@ +content_folder = ['art', 'blog', 'raw'] +relative_build_url = "~/usr/basant/src/kitaab-public/" +absolute_build_url = "https://anish.lakhwara.com/" +files_folder = '' #TODO +build_folder = "build/" +assets_folder = "asset/" +medias_folder = "media/" +template_file = "partial/main.html" +template_nav = "partial/nav.html" +rss_template = "partial/rss.xml" +rss_item_template = "partial/item.xml" +name_of_site = "Kitaab" +site_meta_description = "" +twitter_name = "@aynish@merveilles.town" +home_name = "Home" +see_all = "See more" +go_back = "Go back to" +date_format = "EU" # Choose between EU day-month-year or ISO year-mont-day +flat_build = True # True or False, if True, all files will be written in the root of the website diff --git a/src/kitaab-public/build/mistune.py b/src/kitaab-public/build/mistune.py new file mode 100644 index 0000000..f06f56d --- /dev/null +++ b/src/kitaab-public/build/mistune.py @@ -0,0 +1,1154 @@ +# coding: utf-8 +""" + mistune + ~~~~~~~ + The fastest markdown parser in pure Python with renderer feature. + :copyright: (c) 2014 - 2018 by Hsiaoming Yang. +""" + +import re +import inspect + +__version__ = '0.8.4' +__author__ = 'Hsiaoming Yang ' +__all__ = [ + 'BlockGrammar', 'BlockLexer', + 'InlineGrammar', 'InlineLexer', + 'Renderer', 'Markdown', + 'markdown', 'escape', +] + + +_key_pattern = re.compile(r'\s+') +_nonalpha_pattern = re.compile(r'\W') +_escape_pattern = re.compile(r'&(?!#?\w+;)') +_newline_pattern = re.compile(r'\r\n|\r') +_block_quote_leading_pattern = re.compile(r'^ *> ?', flags=re.M) +_block_code_leading_pattern = re.compile(r'^ {4}', re.M) +_inline_tags = [ + 'a', 'em', 'strong', 'small', 's', 'cite', 'q', 'dfn', 'abbr', 'data', + 'time', 'code', 'var', 'samp', 'kbd', 'sub', 'sup', 'i', 'b', 'u', 'mark', + 'ruby', 'rt', 'rp', 'bdi', 'bdo', 'span', 'br', 'wbr', 'ins', 'del', + 'img', 'font', +] +_pre_tags = ['pre', 'script', 'style'] +_valid_end = r'(?!:/|[^\w\s@]*@)\b' +_valid_attr = r'''\s*[a-zA-Z\-](?:\s*\=\s*(?:"[^"]*"|'[^']*'|[^\s'">]+))?''' +_block_tag = r'(?!(?:%s)\b)\w+%s' % ('|'.join(_inline_tags), _valid_end) +_scheme_blacklist = ('javascript:', 'vbscript:') + + +def _pure_pattern(regex): + pattern = regex.pattern + if pattern.startswith('^'): + pattern = pattern[1:] + return pattern + + +def _keyify(key): + key = escape(key.lower(), quote=True) + return _key_pattern.sub(' ', key) + + +def escape(text, quote=False, smart_amp=True): + """Replace special characters "&", "<" and ">" to HTML-safe sequences. + The original cgi.escape will always escape "&", but you can control + this one for a smart escape amp. + :param quote: if set to True, " and ' will be escaped. + :param smart_amp: if set to False, & will always be escaped. + """ + if smart_amp: + text = _escape_pattern.sub('&', text) + else: + text = text.replace('&', '&') + text = text.replace('<', '<') + text = text.replace('>', '>') + if quote: + text = text.replace('"', '"') + text = text.replace("'", ''') + return text + + +def escape_link(url): + """Remove dangerous URL schemes like javascript: and escape afterwards.""" + lower_url = url.lower().strip('\x00\x1a \n\r\t') + + for scheme in _scheme_blacklist: + if re.sub(r'[^A-Za-z0-9\/:]+', '', lower_url).startswith(scheme): + return '' + return escape(url, quote=True, smart_amp=False) + + +def preprocessing(text, tab=4): + text = _newline_pattern.sub('\n', text) + text = text.expandtabs(tab) + text = text.replace('\u2424', '\n') + pattern = re.compile(r'^ +$', re.M) + return pattern.sub('', text) + + +class BlockGrammar(object): + """Grammars for block level tokens.""" + + def_links = re.compile( + r'^ *\[([^^\]]+)\]: *' # [key]: + r']+)>?' # or link + r'(?: +["(]([^\n]+)[")])? *(?:\n+|$)' + ) + def_footnotes = re.compile( + r'^\[\^([^\]]+)\]: *(' + r'[^\n]*(?:\n+|$)' # [^key]: + r'(?: {1,}[^\n]*(?:\n+|$))*' + r')' + ) + + newline = re.compile(r'^\n+') + block_code = re.compile(r'^( {4}[^\n]+\n*)+') + fences = re.compile( + r'^ *(`{3,}|~{3,}) *([^`\s]+)? *\n' # ```lang + r'([\s\S]+?)\s*' + r'\1 *(?:\n+|$)' # ``` + ) + hrule = re.compile(r'^ {0,3}[-*_](?: *[-*_]){2,} *(?:\n+|$)') + heading = re.compile(r'^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)') + lheading = re.compile(r'^([^\n]+)\n *(=|-)+ *(?:\n+|$)') + block_quote = re.compile(r'^( *>[^\n]+(\n[^\n]+)*\n*)+') + list_block = re.compile( + r'^( *)(?=[*+-]|\d+\.)(([*+-])?(?:\d+\.)?) [\s\S]+?' + r'(?:' + r'\n+(?=\1?(?:[-*_] *){3,}(?:\n+|$))' # hrule + r'|\n+(?=%s)' # def links + r'|\n+(?=%s)' # def footnotes\ + r'|\n+(?=\1(?(3)\d+\.|[*+-]) )' # heterogeneous bullet + r'|\n{2,}' + r'(?! )' + r'(?!\1(?:[*+-]|\d+\.) )\n*' + r'|' + r'\s*$)' % ( + _pure_pattern(def_links), + _pure_pattern(def_footnotes), + ) + ) + list_item = re.compile( + r'^(( *)(?:[*+-]|\d+\.) [^\n]*' + r'(?:\n(?!\2(?:[*+-]|\d+\.) )[^\n]*)*)', + flags=re.M + ) + list_bullet = re.compile(r'^ *(?:[*+-]|\d+\.) +') + paragraph = re.compile( + r'^((?:[^\n]+\n?(?!' + r'%s|%s|%s|%s|%s|%s|%s|%s|%s' + r'))+)\n*' % ( + _pure_pattern(fences).replace(r'\1', r'\2'), + _pure_pattern(list_block).replace(r'\1', r'\3'), + _pure_pattern(hrule), + _pure_pattern(heading), + _pure_pattern(lheading), + _pure_pattern(block_quote), + _pure_pattern(def_links), + _pure_pattern(def_footnotes), + '<' + _block_tag, + ) + ) + block_html = re.compile( + r'^ *(?:%s|%s|%s) *(?:\n{2,}|\s*$)' % ( + r'', + r'<(%s)((?:%s)*?)>([\s\S]*?)<\/\1>' % (_block_tag, _valid_attr), + r'<%s(?:%s)*?\s*\/?>' % (_block_tag, _valid_attr), + ) + ) + table = re.compile( + r'^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*' + ) + nptable = re.compile( + r'^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*' + ) + text = re.compile(r'^[^\n]+') + + +class BlockLexer(object): + """Block level lexer for block grammars.""" + grammar_class = BlockGrammar + + default_rules = [ + 'newline', 'hrule', 'block_code', 'fences', 'heading', + 'nptable', 'lheading', 'block_quote', + 'list_block', 'block_html', 'def_links', + 'def_footnotes', 'table', 'paragraph', 'text' + ] + + list_rules = ( + 'newline', 'block_code', 'fences', 'lheading', 'hrule', + 'block_quote', 'list_block', 'block_html', 'text', + ) + + footnote_rules = ( + 'newline', 'block_code', 'fences', 'heading', + 'nptable', 'lheading', 'hrule', 'block_quote', + 'list_block', 'block_html', 'table', 'paragraph', 'text' + ) + + def __init__(self, rules=None, **kwargs): + self.tokens = [] + self.def_links = {} + self.def_footnotes = {} + + if not rules: + rules = self.grammar_class() + + self.rules = rules + self._max_recursive_depth = kwargs.get('max_recursive_depth', 6) + self._list_depth = 0 + self._blockquote_depth = 0 + + def __call__(self, text, rules=None): + return self.parse(text, rules) + + def parse(self, text, rules=None): + text = text.rstrip('\n') + + if not rules: + rules = self.default_rules + + def manipulate(text): + for key in rules: + rule = getattr(self.rules, key) + m = rule.match(text) + if not m: + continue + getattr(self, 'parse_%s' % key)(m) + return m + return False # pragma: no cover + + while text: + m = manipulate(text) + if m is not False: + text = text[len(m.group(0)):] + continue + if text: # pragma: no cover + raise RuntimeError('Infinite loop at: %s' % text) + return self.tokens + + def parse_newline(self, m): + length = len(m.group(0)) + if length > 1: + self.tokens.append({'type': 'newline'}) + + def parse_block_code(self, m): + # clean leading whitespace + code = _block_code_leading_pattern.sub('', m.group(0)) + self.tokens.append({ + 'type': 'code', + 'lang': None, + 'text': code, + }) + + def parse_fences(self, m): + self.tokens.append({ + 'type': 'code', + 'lang': m.group(2), + 'text': m.group(3), + }) + + def parse_heading(self, m): + self.tokens.append({ + 'type': 'heading', + 'level': len(m.group(1)), + 'text': m.group(2), + }) + + def parse_lheading(self, m): + """Parse setext heading.""" + self.tokens.append({ + 'type': 'heading', + 'level': 1 if m.group(2) == '=' else 2, + 'text': m.group(1), + }) + + def parse_hrule(self, m): + self.tokens.append({'type': 'hrule'}) + + def parse_list_block(self, m): + bull = m.group(2) + self.tokens.append({ + 'type': 'list_start', + 'ordered': '.' in bull, + }) + self._list_depth += 1 + if self._list_depth > self._max_recursive_depth: + self.tokens.append({'type': 'list_item_start'}) + self.parse_text(m) + self.tokens.append({'type': 'list_item_end'}) + else: + cap = m.group(0) + self._process_list_item(cap, bull) + self.tokens.append({'type': 'list_end'}) + self._list_depth -= 1 + + def _process_list_item(self, cap, bull): + cap = self.rules.list_item.findall(cap) + + _next = False + length = len(cap) + + for i in range(length): + item = cap[i][0] + + # remove the bullet + space = len(item) + item = self.rules.list_bullet.sub('', item) + + # outdent + if '\n ' in item: + space = space - len(item) + pattern = re.compile(r'^ {1,%d}' % space, flags=re.M) + item = pattern.sub('', item) + + # determine whether item is loose or not + loose = _next + if not loose and re.search(r'\n\n(?!\s*$)', item): + loose = True + + rest = len(item) + if i != length - 1 and rest: + _next = item[rest-1] == '\n' + if not loose: + loose = _next + + if loose: + t = 'loose_item_start' + else: + t = 'list_item_start' + + self.tokens.append({'type': t}) + # recurse + self.parse(item, self.list_rules) + self.tokens.append({'type': 'list_item_end'}) + + def parse_block_quote(self, m): + self.tokens.append({'type': 'block_quote_start'}) + self._blockquote_depth += 1 + if self._blockquote_depth > self._max_recursive_depth: + self.parse_text(m) + else: + # clean leading > + cap = _block_quote_leading_pattern.sub('', m.group(0)) + self.parse(cap) + self.tokens.append({'type': 'block_quote_end'}) + self._blockquote_depth -= 1 + + def parse_def_links(self, m): + key = _keyify(m.group(1)) + self.def_links[key] = { + 'link': m.group(2), + 'title': m.group(3), + } + + def parse_def_footnotes(self, m): + key = _keyify(m.group(1)) + if key in self.def_footnotes: + # footnote is already defined + return + + self.def_footnotes[key] = 0 + + self.tokens.append({ + 'type': 'footnote_start', + 'key': key, + }) + + text = m.group(2) + + if '\n' in text: + lines = text.split('\n') + whitespace = None + for line in lines[1:]: + space = len(line) - len(line.lstrip()) + if space and (not whitespace or space < whitespace): + whitespace = space + newlines = [lines[0]] + for line in lines[1:]: + newlines.append(line[whitespace:]) + text = '\n'.join(newlines) + + self.parse(text, self.footnote_rules) + + self.tokens.append({ + 'type': 'footnote_end', + 'key': key, + }) + + def parse_table(self, m): + item = self._process_table(m) + + cells = re.sub(r'(?: *\| *)?\n$', '', m.group(3)) + cells = cells.split('\n') + for i, v in enumerate(cells): + v = re.sub(r'^ *\| *| *\| *$', '', v) + cells[i] = re.split(r' *(?~|])') # \* \+ \! .... + inline_html = re.compile( + r'^(?:%s|%s|%s)' % ( + r'', + r'<(\w+%s)((?:%s)*?)\s*>([\s\S]*?)<\/\1>' % ( + _valid_end, _valid_attr), + r'<\w+%s(?:%s)*?\s*\/?>' % (_valid_end, _valid_attr), + ) + ) + autolink = re.compile(r'^<([^ >]+(@|:)[^ >]+)>') + link = re.compile( + r'^!?\[(' + r'(?:\[[^^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*' + r')\]\(' + r'''\s*(<)?([\s\S]*?)(?(2)>)(?:\s+['"]([\s\S]*?)['"])?\s*''' + r'\)' + ) + reflink = re.compile( + r'^!?\[(' + r'(?:\[[^^\]]*\]|[^\[\]]|\](?=[^\[]*\]))*' + r')\]\s*\[([^^\]]*)\]' + ) + nolink = re.compile(r'^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]') + url = re.compile(r'''^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])''') + double_emphasis = re.compile( + r'^_{2}([\s\S]+?)_{2}(?!_)' # __word__ + r'|' + r'^\*{2}([\s\S]+?)\*{2}(?!\*)' # **word** + ) + emphasis = re.compile( + r'^\b_((?:__|[^_])+?)_\b' # _word_ + r'|' + r'^\*((?:\*\*|[^\*])+?)\*(?!\*)' # *word* + ) + code = re.compile(r'^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)') # `code` + linebreak = re.compile(r'^ {2,}\n(?!\s*$)') + strikethrough = re.compile(r'^~~(?=\S)([\s\S]*?\S)~~') # ~~word~~ + footnote = re.compile(r'^\[\^([^\]]+)\]') + text = re.compile(r'^[\s\S]+?(?=[\\%s' % (tag, extra, text, tag) + else: + html = m.group(0) + return self.renderer.inline_html(html) + + def output_footnote(self, m): + key = _keyify(m.group(1)) + if key not in self.footnotes: + return None + if self.footnotes[key]: + return None + self.footnote_index += 1 + self.footnotes[key] = self.footnote_index + return self.renderer.footnote_ref(key, self.footnote_index) + + def output_link(self, m): + return self._process_link(m, m.group(3), m.group(4)) + + def output_reflink(self, m): + key = _keyify(m.group(2) or m.group(1)) + if key not in self.links: + return None + ret = self.links[key] + return self._process_link(m, ret['link'], ret['title']) + + def output_nolink(self, m): + key = _keyify(m.group(1)) + if key not in self.links: + return None + ret = self.links[key] + return self._process_link(m, ret['link'], ret['title']) + + def _process_link(self, m, link, title=None): + line = m.group(0) + text = m.group(1) + if line[0] == '!': + return self.renderer.image(link, title, text) + + self._in_link = True + text = self.output(text) + self._in_link = False + return self.renderer.link(link, title, text) + + def output_double_emphasis(self, m): + text = m.group(2) or m.group(1) + text = self.output(text) + return self.renderer.double_emphasis(text) + + def output_emphasis(self, m): + text = m.group(2) or m.group(1) + text = self.output(text) + return self.renderer.emphasis(text) + + def output_code(self, m): + text = m.group(2) + return self.renderer.codespan(text) + + def output_linebreak(self, m): + return self.renderer.linebreak() + + def output_strikethrough(self, m): + text = self.output(m.group(1)) + return self.renderer.strikethrough(text) + + def output_text(self, m): + text = m.group(0) + return self.renderer.text(text) + + +class Renderer(object): + """The default HTML renderer for rendering Markdown. + """ + + def __init__(self, **kwargs): + self.options = kwargs + + def placeholder(self): + """Returns the default, empty output value for the renderer. + All renderer methods use the '+=' operator to append to this value. + Default is a string so rendering HTML can build up a result string with + the rendered Markdown. + Can be overridden by Renderer subclasses to be types like an empty + list, allowing the renderer to create a tree-like structure to + represent the document (which can then be reprocessed later into a + separate format like docx or pdf). + """ + return '' + + def block_code(self, code, lang=None): + """Rendering block level code. ``pre > code``. + :param code: text content of the code block. + :param lang: language of the given code. + """ + code = code.rstrip('\n') + if not lang: + code = escape(code, smart_amp=False) + return '
%s\n
\n' % code + code = escape(code, quote=True, smart_amp=False) + return '
%s\n
\n' % (lang, code) + + def block_quote(self, text): + """Rendering
with the given text. + :param text: text content of the blockquote. + """ + return '
%s\n
\n' % text.rstrip('\n') + + def block_html(self, html): + """Rendering block level pure html content. + :param html: text content of the html snippet. + """ + if self.options.get('skip_style') and \ + html.lower().startswith('`` ``

``. + :param text: rendered text content for the header. + :param level: a number for the header level, for example: 1. + :param raw: raw text content of the header. + """ + return '%s\n' % (level, text, level) + + def hrule(self): + """Rendering method for ``
`` tag.""" + if self.options.get('use_xhtml'): + return '
\n' + return '
\n' + + def list(self, body, ordered=True): + """Rendering list tags like ``
    `` and ``
      ``. + :param body: body contents of the list. + :param ordered: whether this list is ordered or not. + """ + tag = 'ul' + if ordered: + tag = 'ol' + return '<%s>\n%s\n' % (tag, body, tag) + + def list_item(self, text): + """Rendering list item snippet. Like ``
    1. ``.""" + return '
    2. %s
    3. \n' % text + + def paragraph(self, text): + """Rendering paragraph tags. Like ``

      ``.""" + return '

      %s

      \n' % text.strip(' ') + + def table(self, header, body): + """Rendering table element. Wrap header and body in it. + :param header: header part of the table. + :param body: body part of the table. + """ + return ( + '\n%s\n' + '\n%s\n
      \n' + ) % (header, body) + + def table_row(self, content): + """Rendering a table row. Like ````. + :param content: content of current table row. + """ + return '\n%s\n' % content + + def table_cell(self, content, **flags): + """Rendering a table cell. Like ```` ````. + :param content: content of current table cell. + :param header: whether this is header or not. + :param align: align of current table cell. + """ + if flags['header']: + tag = 'th' + else: + tag = 'td' + align = flags['align'] + if not align: + return '<%s>%s\n' % (tag, content, tag) + return '<%s style="text-align:%s">%s\n' % ( + tag, align, content, tag + ) + + def double_emphasis(self, text): + """Rendering **strong** text. + :param text: text content for emphasis. + """ + return '%s' % text + + def emphasis(self, text): + """Rendering *emphasis* text. + :param text: text content for emphasis. + """ + return '%s' % text + + def codespan(self, text): + """Rendering inline `code` text. + :param text: text content for inline code. + """ + text = escape(text.rstrip(), smart_amp=False) + return '%s' % text + + def linebreak(self): + """Rendering line break like ``
      ``.""" + if self.options.get('use_xhtml'): + return '
      \n' + return '
      \n' + + def strikethrough(self, text): + """Rendering ~~strikethrough~~ text. + :param text: text content for strikethrough. + """ + return '%s' % text + + def text(self, text): + """Rendering unformatted text. + :param text: text content. + """ + if self.options.get('parse_block_html'): + return text + return escape(text) + + def escape(self, text): + """Rendering escape sequence. + :param text: text content. + """ + return escape(text) + + def autolink(self, link, is_email=False): + """Rendering a given link or email address. + :param link: link content or email address. + :param is_email: whether this is an email or not. + """ + text = link = escape_link(link) + if is_email: + link = 'mailto:%s' % link + return '%s' % (link, text) + + def link(self, link, title, text): + """Rendering a given link with content and title. + :param link: href link for ```` tag. + :param title: title content for `title` attribute. + :param text: text content for description. + """ + link = escape_link(link) + if not title: + return '%s' % (link, text) + title = escape(title, quote=True) + return '%s' % (link, title, text) + + def image(self, src, title, text): + """Rendering a image with title and text. + :param src: source link of the image. + :param title: title text of the image. + :param text: alt text of the image. + """ + src = escape_link(src) + text = escape(text, quote=True) + if title: + title = escape(title, quote=True) + html = '%s' % html + return '%s>' % html + + def inline_html(self, html): + """Rendering span level pure html content. + :param html: text content of the html snippet. + """ + if self.options.get('escape'): + return escape(html) + return html + + def newline(self): + """Rendering newline element.""" + return '' + + def footnote_ref(self, key, index): + """Rendering the ref anchor of a footnote. + :param key: identity key for the footnote. + :param index: the index count of current footnote. + """ + html = ( + '' + '%d' + ) % (escape(key), escape(key), index) + return html + + def footnote_item(self, key, text): + """Rendering a footnote item. + :param key: identity key for the footnote. + :param text: text content of the footnote. + """ + back = ( + '' + ) % escape(key) + text = text.rstrip() + if text.endswith('

      '): + text = re.sub(r'<\/p>$', r'%s

      ' % back, text) + else: + text = '%s

      %s

      ' % (text, back) + html = '
    4. %s
    5. \n' % (escape(key), text) + return html + + def footnotes(self, text): + """Wrapper for all footnotes. + :param text: contents of all footnotes. + """ + html = '
      \n%s
        %s
      \n
      \n' + return html % (self.hrule(), text) + + +class Markdown(object): + """The Markdown parser. + :param renderer: An instance of ``Renderer``. + :param inline: An inline lexer class or instance. + :param block: A block lexer class or instance. + """ + def __init__(self, renderer=None, inline=None, block=None, **kwargs): + if not renderer: + renderer = Renderer(**kwargs) + else: + kwargs.update(renderer.options) + + self.renderer = renderer + + if inline and inspect.isclass(inline): + inline = inline(renderer, **kwargs) + if block and inspect.isclass(block): + block = block(**kwargs) + + if inline: + self.inline = inline + else: + self.inline = InlineLexer(renderer, **kwargs) + + self.block = block or BlockLexer(BlockGrammar()) + self.footnotes = [] + self.tokens = [] + + # detect if it should parse text in block html + self._parse_block_html = kwargs.get('parse_block_html') + + def __call__(self, text): + return self.parse(text) + + def render(self, text): + """Render the Markdown text. + :param text: markdown formatted text content. + """ + return self.parse(text) + + def parse(self, text): + out = self.output(preprocessing(text)) + + keys = self.block.def_footnotes + + # reset block + self.block.def_links = {} + self.block.def_footnotes = {} + + # reset inline + self.inline.links = {} + self.inline.footnotes = {} + + if not self.footnotes: + return out + + footnotes = filter(lambda o: keys.get(o['key']), self.footnotes) + self.footnotes = sorted( + footnotes, key=lambda o: keys.get(o['key']), reverse=True + ) + + body = self.renderer.placeholder() + while self.footnotes: + note = self.footnotes.pop() + body += self.renderer.footnote_item( + note['key'], note['text'] + ) + + out += self.renderer.footnotes(body) + return out + + def pop(self): + if not self.tokens: + return None + self.token = self.tokens.pop() + return self.token + + def peek(self): + if self.tokens: + return self.tokens[-1] + return None # pragma: no cover + + def output(self, text, rules=None): + self.tokens = self.block(text, rules) + self.tokens.reverse() + + self.inline.setup(self.block.def_links, self.block.def_footnotes) + + out = self.renderer.placeholder() + while self.pop(): + out += self.tok() + return out + + def tok(self): + t = self.token['type'] + + # sepcial cases + if t.endswith('_start'): + t = t[:-6] + + return getattr(self, 'output_%s' % t)() + + def tok_text(self): + text = self.token['text'] + while self.peek()['type'] == 'text': + text += '\n' + self.pop()['text'] + return self.inline(text) + + def output_newline(self): + return self.renderer.newline() + + def output_hrule(self): + return self.renderer.hrule() + + def output_heading(self): + return self.renderer.header( + self.inline(self.token['text']), + self.token['level'], + self.token['text'], + ) + + def output_code(self): + return self.renderer.block_code( + self.token['text'], self.token['lang'] + ) + + def output_table(self): + aligns = self.token['align'] + aligns_length = len(aligns) + cell = self.renderer.placeholder() + + # header part + header = self.renderer.placeholder() + for i, value in enumerate(self.token['header']): + align = aligns[i] if i < aligns_length else None + flags = {'header': True, 'align': align} + cell += self.renderer.table_cell(self.inline(value), **flags) + + header += self.renderer.table_row(cell) + + # body part + body = self.renderer.placeholder() + for i, row in enumerate(self.token['cells']): + cell = self.renderer.placeholder() + for j, value in enumerate(row): + align = aligns[j] if j < aligns_length else None + flags = {'header': False, 'align': align} + cell += self.renderer.table_cell(self.inline(value), **flags) + body += self.renderer.table_row(cell) + + return self.renderer.table(header, body) + + def output_block_quote(self): + body = self.renderer.placeholder() + while self.pop()['type'] != 'block_quote_end': + body += self.tok() + return self.renderer.block_quote(body) + + def output_list(self): + ordered = self.token['ordered'] + body = self.renderer.placeholder() + while self.pop()['type'] != 'list_end': + body += self.tok() + return self.renderer.list(body, ordered) + + def output_list_item(self): + body = self.renderer.placeholder() + while self.pop()['type'] != 'list_item_end': + if self.token['type'] == 'text': + body += self.tok_text() + else: + body += self.tok() + + return self.renderer.list_item(body) + + def output_loose_item(self): + body = self.renderer.placeholder() + while self.pop()['type'] != 'list_item_end': + body += self.tok() + return self.renderer.list_item(body) + + def output_footnote(self): + self.inline._in_footnote = True + body = self.renderer.placeholder() + key = self.token['key'] + while self.pop()['type'] != 'footnote_end': + body += self.tok() + self.footnotes.append({'key': key, 'text': body}) + self.inline._in_footnote = False + return self.renderer.placeholder() + + def output_close_html(self): + text = self.token['text'] + return self.renderer.block_html(text) + + def output_open_html(self): + text = self.token['text'] + tag = self.token['tag'] + if self._parse_block_html and tag not in _pre_tags: + text = self.inline(text, rules=self.inline.inline_html_rules) + extra = self.token.get('extra') or '' + html = '<%s%s>%s' % (tag, extra, text, tag) + return self.renderer.block_html(html) + + def output_paragraph(self): + return self.renderer.paragraph(self.inline(self.token['text'])) + + def output_text(self): + return self.renderer.paragraph(self.tok_text()) + + +def markdown(text, escape=True, **kwargs): + """Render markdown formatted text to html. + :param text: markdown formatted text content. + :param escape: if set to False, all html tags will not be escaped. + :param use_xhtml: output with xhtml tags. + :param hard_wrap: if set to True, it will use the GFM line breaks feature. + :param parse_block_html: parse text only in block level html. + :param parse_inline_html: parse text only in inline level html. + """ + return Markdown(escape=escape, **kwargs)(text) \ No newline at end of file diff --git a/src/kitaab-public/media/2c5030bc48b4bfa9.jpeg b/src/kitaab-public/media/2c5030bc48b4bfa9.jpeg new file mode 100644 index 0000000..cf89826 Binary files /dev/null and b/src/kitaab-public/media/2c5030bc48b4bfa9.jpeg differ diff --git a/src/kitaab-public/media/blue-man.png b/src/kitaab-public/media/blue-man.png new file mode 100644 index 0000000..824a1f9 Binary files /dev/null and b/src/kitaab-public/media/blue-man.png differ diff --git a/src/kitaab-public/media/chihiro.jpg b/src/kitaab-public/media/chihiro.jpg new file mode 100644 index 0000000..c1acd4e Binary files /dev/null and b/src/kitaab-public/media/chihiro.jpg differ diff --git a/src/kitaab-public/media/chisai_square.png b/src/kitaab-public/media/chisai_square.png new file mode 100644 index 0000000..9046796 Binary files /dev/null and b/src/kitaab-public/media/chisai_square.png differ diff --git a/src/kitaab-public/media/city.jpeg b/src/kitaab-public/media/city.jpeg new file mode 100644 index 0000000..d6810a5 Binary files /dev/null and b/src/kitaab-public/media/city.jpeg differ diff --git a/src/kitaab-public/media/kaguya.jpg b/src/kitaab-public/media/kaguya.jpg new file mode 100644 index 0000000..b665de6 Binary files /dev/null and b/src/kitaab-public/media/kaguya.jpg differ diff --git a/src/kitaab-public/media/lady.jpeg b/src/kitaab-public/media/lady.jpeg new file mode 100644 index 0000000..a976245 Binary files /dev/null and b/src/kitaab-public/media/lady.jpeg differ diff --git a/src/kitaab-public/output/200926-2245.html b/src/kitaab-public/output/200926-2245.html new file mode 100644 index 0000000..1d6e47b --- /dev/null +++ b/src/kitaab-public/output/200926-2245.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + blog future-of-foss quotes + 200926-2245 +

      %title De-facto proprietary software +:blog:future-of-foss:quotes: +%date 2020-09-26 22:45 +You want to download thousands of lines of useful, but random, code from the internet, for free, run it in a production web server, or worse, your user’s machine, trust it with your paying users’ data and reap that sweet dough. We all do. But then you can’t be bothered to check the license, understand the software you are running and still want to blame the people who make your business a possibility when mistakes happen, while giving them nothing for it? This is both incompetence and entitlement.

      +

      https://13brane.net/rants/de-facto-closed-source/

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200927-0010.html b/src/kitaab-public/output/200927-0010.html new file mode 100644 index 0000000..7fdbb2f --- /dev/null +++ b/src/kitaab-public/output/200927-0010.html @@ -0,0 +1,160 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + sealight.services writing + 200927-0010 +

      %title sealight services intro +:sealight.services:writing: +%date 2020-09-27 00:10

      +

      sealight.services is the cove you wash up on after having drifted too far out from comfortable waters. As you look around you notice some of the rock is smooth, especially where the light from the gap in the roof shines through. You see scorched driftwood and a couple large stones laid out with intention. You feel the warmth on your skin.

      +

      Do you remember how you got here now? +Do you remember where you were going to go?

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200927-0028.html b/src/kitaab-public/output/200927-0028.html new file mode 100644 index 0000000..7f64688 --- /dev/null +++ b/src/kitaab-public/output/200927-0028.html @@ -0,0 +1,157 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing maze + 200927-0028 +

      %title Just so +:writing:maze:

      +

      the stack of papers may seem like chaos, but LRU it's the most efficient solution organized solution you can make

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200927-0111.html b/src/kitaab-public/output/200927-0111.html new file mode 100644 index 0000000..cc3fbfe --- /dev/null +++ b/src/kitaab-public/output/200927-0111.html @@ -0,0 +1,161 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + blog maze writing + 200927-0111 +

      %title Structure of Sorcery +:blog:maze:writing: +%date 2020-09-27 01:11

      +

      Magic, as we seem to understand it, is the ability to affect change in ways we didn't think possible. +Once you understand how the mechanism, by definition it is no longer magic.

      +

      In order to manifest impossible realities first we must be able to imagine them, hence belief is our primary tool. Those who search for these techniques are wixen. Our abilities tend to be localized and syncronicity the multiplier. Each may have their own rituals, but cooperation is our strength.

      +

      Enacting change is the purpose of all effort. Our tools must be as varied as the uses for energy, then. Change may be the only constant, but our mortality prohibits us from simply waiting for what we wish to happen.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200927-0149.html b/src/kitaab-public/output/200927-0149.html new file mode 100644 index 0000000..93e4413 --- /dev/null +++ b/src/kitaab-public/output/200927-0149.html @@ -0,0 +1,162 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + Kitaab dev + 200927-0149 +

      %title Shaarli integration +:Kitaab:dev: +%date 2020-09-27 01:49

      +

      A shaarli integration for Kitaab.

      +

      Start with a CLI client + https://github.com/shaarli/python-shaarli-client is a start +Find a way to wrap them in vim commands +Insert them by tag/search/etc

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200927-1627.html b/src/kitaab-public/output/200927-1627.html new file mode 100644 index 0000000..2d5e38c --- /dev/null +++ b/src/kitaab-public/output/200927-1627.html @@ -0,0 +1,161 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + webquote dev manifesto + 200927-1627 +

      %title Critical Engineering Manifesto +:webquote:dev:manifesto: +%date 2020-09-27 16:27

      +
        +
      1. The Critical Engineer expands "machine" to describe interrelationships encompassing devices, bodies, agents, forces and networks.
      2. +
      +

      https://criticalengineering.org/

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200927-1651.html b/src/kitaab-public/output/200927-1651.html new file mode 100644 index 0000000..909c657 --- /dev/null +++ b/src/kitaab-public/output/200927-1651.html @@ -0,0 +1,167 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + webquote + 200927-1651 +

      %title Cosmo +:webquote: +%date 2020-09-27 16:51

      +

      And you may ask yourself +Well... How did I get here? +And you may ask yourself +"How do I work this?" +And you may ask yourself +"Where is that large automobile?" +And you may tell yourself +"This is not my beautiful house!"

      +

      Attention Conservation Notice: What follows is long, self-absorbed, and boring to look at; much of it was written ten or even twenty years ago.

      +

      http://bactra.org/

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200927-1730.html b/src/kitaab-public/output/200927-1730.html new file mode 100644 index 0000000..ea10491 --- /dev/null +++ b/src/kitaab-public/output/200927-1730.html @@ -0,0 +1,160 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev meta + 200927-1730 +

      %title Getting Grasp to work with Kitaab +:dev:meta: +%date 2020-09-27 17:30

      +

      I need to find a command I can run that will start Vimwiki from command line. (Probably through .vimrc -> nvim.nix) +Then I need to make a pull request to grasp to run subprocess.call('vim ') +Paste the contents into the open file? Show the interactive session?

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200927-1936.html b/src/kitaab-public/output/200927-1936.html new file mode 100644 index 0000000..77894f5 --- /dev/null +++ b/src/kitaab-public/output/200927-1936.html @@ -0,0 +1,165 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing blog + 200927-1936 +

      %title Standing on the Shoulders of Understandable Giants +:writing:blog: +%date 2020-09-27 19:36

      +

      Many people admire modern software. The ease with which we can do incredible tasks is truly powerful; navigation, translation, taxes. Consumer technology has changed the way people operate. But it is a brittle tool. Trying to do anything outside of the scope of what was designed it falls apart. We cannot inspect it's workings, or configure personalizations to our own benefit. We do not get to build on top of the giants, simply pass through them in a very specific way.

      +

      There are those who refuse these terms entirely and opt to build their own tools. These craftspeople will forge the tools that fit their needs best. Building foundations at bedrock allows for the most control. Make the tools exactly as you need them. These people garner a deep respect from me.

      +

      I land somewhere in the middle.

      +

      A big development in my understanding of the craft was from the realization that I can just inspect open source code. After all that is the point. For a long time I was scared to peek behind the curtain, afraid that the runes would be illegible. But that was a silly fear. A big part of how I learn now is just looking at how other people solved a problem. Afterall the patterns are adaptable.

      +

      Being able to inspect and understand code doesn't have the same benefits as having built them entirely yourself. In exchange you are granted height, and as much control as you can muster. Can you master somebody else's spell enough to make it your own? I know the limits of my own power and so limiting the complexity is desirable.

      +

      No single person can understand the entirety of their toolchain. We must depend on each other in order to wield our artifacts at all. There's always another layer below 'bedrock'. The operating system underlies application space. The instruction set underlies the OS and BIOS. The silicon underlies the BIOS. The silicon must be extracted which requires additional industrial scale tools to shape and form.

      +

      Will you chisel away at the void, to craft the perfect tool? Or will bow to cosmic powers of the corpers you summon, happy enough be granted outcomes of incantions.

      +

      I will choose to stand of the shoulders of the giants I can understand. Those that I can also control.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200927-2151.html b/src/kitaab-public/output/200927-2151.html new file mode 100644 index 0000000..87b4e3d --- /dev/null +++ b/src/kitaab-public/output/200927-2151.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + webquote http + 200927-2151 +

      %title What is a type? | Lambda the Ultimate +:webquote: http://lambda-the-ultimate.org/node/5604 +%date 2020-09-27 Sun 21:49] +Selection: +I'll repeat this here, since it seems quite relevant.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200927-2157.html b/src/kitaab-public/output/200927-2157.html new file mode 100644 index 0000000..b785e14 --- /dev/null +++ b/src/kitaab-public/output/200927-2157.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + webquote http + 200927-2157 +

      %title What is a type? | Lambda the Ultimate +:webquote: http://lambda-the-ultimate.org/node/5604 +%date [2020-09-27 Sun 21:56]

      +

      Types are mostly used in three ways:

      +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200927-2244.html b/src/kitaab-public/output/200927-2244.html new file mode 100644 index 0000000..9fc1e70 --- /dev/null +++ b/src/kitaab-public/output/200927-2244.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev meta kitaab + 200927-2244 +

      %title grasp changes +:dev:meta:kitaab: +%date 2020-09-27 22:44

      +

      Add multi-line patch from issue https://github.com/karlicoss/grasp/issues/22 +Get server to run vim -c VimwikiRegenerateTags +c ZettelGenerateTags webquote ~/vimwiki/webquotes.wiki

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200928-0048.html b/src/kitaab-public/output/200928-0048.html new file mode 100644 index 0000000..ff40e07 --- /dev/null +++ b/src/kitaab-public/output/200928-0048.html @@ -0,0 +1,163 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev line meta nix-on-droid doesn't allow you to browse the rest of the system -- see https + 200928-0048 +

      %title Kitaab on line +:dev:line:meta: +%date 2020-09-28 00:48

      +

      Problem: nix-on-droid doesn't allow you to browse the rest of the system -- see https://github.com/t184256/nix-on-droid/issues/78 +Fix: have a git repo I can pull to do initial config

      +

      Problem: Can't build vim-zettel, taskwiki, etc... because no nixpkgs +Fix: clone my fork TODO

      +

      Problem: nvim.nix still doesn't install node.js necessary for coc +Fix: include nodejs in nvim.nix? TODO

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200928-0054.html b/src/kitaab-public/output/200928-0054.html new file mode 100644 index 0000000..9ed9c8a --- /dev/null +++ b/src/kitaab-public/output/200928-0054.html @@ -0,0 +1,163 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + work + 200928-0054 +

      %title Work Laptop Setup +:work: +%date 2020-09-28 00:54

      +

      Installing Ubuntu in a virtualbox is a nightmare

      +
        +
      • VirtualBox is very slow to install
      • +
      • HyperV has shit resolution and is very laggy
      • +
      • WSL requires a microsoft account -> need password-store
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200928-0059.html b/src/kitaab-public/output/200928-0059.html new file mode 100644 index 0000000..7bebc50 --- /dev/null +++ b/src/kitaab-public/output/200928-0059.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + puralek line meta + 200928-0059 +

      %title Puralek for Line +:puralek:line:meta: +%date 2020-09-28 00:59

      +

      grasp for android?

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200928-1351.html b/src/kitaab-public/output/200928-1351.html new file mode 100644 index 0000000..80c5972 --- /dev/null +++ b/src/kitaab-public/output/200928-1351.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev kitaab + 200928-1351 +

      %title PDF pipeline +:dev:kitaab: +%date 2020-09-28 13:51

      +

      Firefox extension or shaarli grabber that takes pdf links downloads them and adds them to non-fiction syncthing directory to be available on hyperplane

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200929-2026.html b/src/kitaab-public/output/200929-2026.html new file mode 100644 index 0000000..c5f89f2 --- /dev/null +++ b/src/kitaab-public/output/200929-2026.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + puralek + 200929-2026 +

      %title Data stores (ie not streams) +:puralek: +%date 2020-09-29 20:26

      +

      I need to find a data store for pdf recipes and a way to store workouts.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200930-1921.html b/src/kitaab-public/output/200930-1921.html new file mode 100644 index 0000000..8e8ecc4 --- /dev/null +++ b/src/kitaab-public/output/200930-1921.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + organization + 200930-1921 +

      %title Dealing with Thrashing +:organization: +%date 2020-09-30 19:21

      +

      I thrash around a lot and don't tend to focus on one task at a time. This, I have known for a long time, and have tried to build systems to help me keep track of all the things I am doing so I can continue to operate in this way. But I think something needs to change.

      +

      I was thinking of setting a bi-weekly (once in 2 weeks) 'focus' and only doing tasks in that 'project'. This combined with a 1thingaday that I follow well, will hopefully help me achieve the things that I want to.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200930-2316.html b/src/kitaab-public/output/200930-2316.html new file mode 100644 index 0000000..6fa9d74 --- /dev/null +++ b/src/kitaab-public/output/200930-2316.html @@ -0,0 +1,164 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + puralek + 200930-2316 +

      %title Rules for Backups +:puralek: +%date 2020-09-30 23:16

      +

      3-2-1 rule

      +
        +
      • 3 backups
      • +
      • in 2 mediums
      • +
      • with 1 in a remote location
      • +
      +

      backup should be automatic, with monthly/weekly schedules running to ensure no dataloss

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200930-2317.html b/src/kitaab-public/output/200930-2317.html new file mode 100644 index 0000000..1aad8b0 --- /dev/null +++ b/src/kitaab-public/output/200930-2317.html @@ -0,0 +1,176 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + puralek + 200930-2317 +

      %title Flows +:puralek: +%date 2020-09-30 23:17

      +
        +
      • music/tv/books needs to be curated -> ▖▗▟▞▒▓▝ needs to be configured
      • +
      • images
          +
        • phone photos
        • +
        • images i like/content online
        • +
        +
      • +
      • writings/notes
      • +
      • consolidate jrnl - only has entries from April onwards.
      • +
      • old forgotten projects (boss man boss?)
      • +
      • other things from a forgotten age saved
      • +
      • Habits
      • +
      • Fitness
      • +
      • Location
      • +
      • Financial
      • +
      • Calendar/meetings
      • +
      • Tasks
      • +
      • School stuff
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/200930-2319.html b/src/kitaab-public/output/200930-2319.html new file mode 100644 index 0000000..b1830c8 --- /dev/null +++ b/src/kitaab-public/output/200930-2319.html @@ -0,0 +1,162 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + puralek writing + 200930-2319 +

      %title Why have an HPI? +:puralek:writing: +%date 2020-09-30 23:19

      +

      story: + when thinking about how to view and save and store data such that it makes the most sense, having an interface that classifies arbitrarily tagged data (podcasts, files, rss feeds, etc etc) to show the content you're looking for sounds interesting. Having the same set of tags across all the formats seems like a good place to start this endeavour but I fear this may be not concrete enough to work with yet

      +

      A collection of my raw data from the past that should be organized. A curation of the media ive enjoyed, my creative endeavours and things that i saved. Ultimately aims to be a museum of me to help me understand myself. how can a museum also be living though? my computer is a delicate dance atop the terminal, how could it be static?

      +

      The problem is that my information is scattered, unindexed, and of an unknown quality +This goes beyond just collecting data, but using a collection of data to create new tools to interact with it. Formatting and organising my own information so that it's accessible to learn from

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201001-1906.html b/src/kitaab-public/output/201001-1906.html new file mode 100644 index 0000000..b81b798 --- /dev/null +++ b/src/kitaab-public/output/201001-1906.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + kendrit vim https + 201001-1906 +

      %title Vim tricks +:kendrit:vim: +%date 2020-10-01 19:06

      +

      Screen: H (top of screen), M (middle of screen), L (bottom of screen)

      +

      taken from: https://missing.csail.mit.edu/2020/editors/

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201001-1949.html b/src/kitaab-public/output/201001-1949.html new file mode 100644 index 0000000..b2d7858 --- /dev/null +++ b/src/kitaab-public/output/201001-1949.html @@ -0,0 +1,185 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + blog writing + 201001-1949 +

      %title My journey with Linux +:blog:writing: +%date 2020-10-01 19:49

      +

      Started out experimenting with VMs in high school (2013) + never got very far (dont think i actually got an install working) +get sick of windows slowing down my laptop in college (2015?) +decide to install Arch to bootloader because I'm hardcore (and was on break from school) +try many times to get it installed +get it working, install WM only -- bspwm was trendy at the time +learn shell, git, vim because all the r/unixporn and /g/ desktop threads were doing that +learn about AUR +keep forgetting to run pacman -Syu and then when I do it breaks my computer +get sick of that and install debian net-install +continue running bspwm +become indoctrinated into the FOSS zealotry +continue with debian net-install, bspwm, vim -> happy with my setup +... +buy a chromebook for uni (2016) +install xfce on it because compiling on chromebook was wack +... +buy a desktop (2017) +use similar setup to original laptop +turn laptop into server +start learning about self hosting foss shit to make my life better +... +but have to do uni shit +buy librem13v3 (2019) +get sick of having to do everything by hand on desktop and switch to mostly using laptop +laptop keyboard sucks though (using ErgoDox EZ on desktop) +learn about nixOS +install it on everythinig so I don't have to keep recreating setups.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201003-1607.html b/src/kitaab-public/output/201003-1607.html new file mode 100644 index 0000000..7b9a920 --- /dev/null +++ b/src/kitaab-public/output/201003-1607.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + ops + 201003-1607 +

      %title Keyboard changes +:ops: +%date 2020-10-03 16:07

      +

      Add backtick

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201004-2232.html b/src/kitaab-public/output/201004-2232.html new file mode 100644 index 0000000..a4bf51a --- /dev/null +++ b/src/kitaab-public/output/201004-2232.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev pirate + 201004-2232 +

      %title MAMGrab +:dev:pirate: +%date 2020-10-04 22:32

      +

      Python script to grab .torrent files from MAM's API (https://www.myanonamouse.net/api/endpoint.php/1/tor/js/loadSearchJSONbasic.php )

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201006-2310.html b/src/kitaab-public/output/201006-2310.html new file mode 100644 index 0000000..66e3a55 --- /dev/null +++ b/src/kitaab-public/output/201006-2310.html @@ -0,0 +1,160 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + meta dev + 201006-2310 +

      %title taskwiki fix +:meta:dev: +%date 2020-10-06 23:10

      +

      currently taskwiki is broken because it requires a new version of tasklib (2.2.1) +tasklib is in nixpkgs/pkgs/development/python-modules/taskwiki +I need to change the sha256 hash to update to the new version

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201013-2143.html b/src/kitaab-public/output/201013-2143.html new file mode 100644 index 0000000..5fd9a2a --- /dev/null +++ b/src/kitaab-public/output/201013-2143.html @@ -0,0 +1,161 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + puralek backup + 201013-2143 +

      %title HDD Catalouge +:puralek:backup: +%date 2020-10-13 21:43

      +

      Silver -> Memories + Nostalgia +Black -> +Mother of all HDD -> Music +Big Black -> Movies + TV

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201013-2144.html b/src/kitaab-public/output/201013-2144.html new file mode 100644 index 0000000..0eebf39 --- /dev/null +++ b/src/kitaab-public/output/201013-2144.html @@ -0,0 +1,181 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + puralek bowl + 201013-2144 +

      %title Bowl to NixOS Migration +:puralek:bowl: +%date 2020-10-13 21:44

      +

      Wish to migrate all the services on bowl to nixOS from Ubuntu +As part of Puralek +Necessary in order to add wireguard

      +

      = Services =

      +
        +
      • VPN -> Wireguard
      • +
      • AirSonic
      • +
      • Nextcloud
          +
        • Contacts
        • +
        • Calendar
        • +
        • Files
            +
          • Pictures
          • +
          +
        • +
        • GpxPod
        • +
        +
      • +
      • TaskWarrior
      • +
      • Wallabag
      • +
      • Shaarli
      • +
      • NFS share (TV/Movies)
      • +
      • Headphones/Lidarr/Sonarr ▒▚▝▐▐░
      • +
      • beancount + fava (finances)
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201013-2206.html b/src/kitaab-public/output/201013-2206.html new file mode 100644 index 0000000..b1fb8f6 --- /dev/null +++ b/src/kitaab-public/output/201013-2206.html @@ -0,0 +1,175 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + puralek + 201013-2206 +

      %title Flows for HPI +:puralek: +%date 2020-10-13 22:06

      +

      = flows = +shaarli (▟▓▟▚▖▗▜/▜▒▔/▓▞▚░▚▘▙) -> ▝▛▐▔▐▔/▟░▘▙▐░▟/▚▓▔▘▙▝▐▓▒▓▚ +~~ email (links) -> shaarli ~~ +telegram chanel -> rss +telegram self messages -> ?? +rss stars -> Blog +telegram messages more than 5 years old -> archive +firefox tab groups -> sync (i think this syncs), files +~~ are.na -> shaarli (read-imap) ~~ +slack music -> shaarli?

      +

      theStudio -> Shaarli

      +

      ~~ gnome-pomodoro -> time tracker -> newpage ~~ +uHabits -> habit-server -> habitsGtk / dijo +Kitaab -> Blog +Wallabag -> Annotations +Kobo -> Annotations +merveilles.town -> Notes

      +

      take media and throw it in shaarli

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201013-2207.html b/src/kitaab-public/output/201013-2207.html new file mode 100644 index 0000000..4f88ea6 --- /dev/null +++ b/src/kitaab-public/output/201013-2207.html @@ -0,0 +1,165 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + puralek writing + 201013-2207 +

      %title Idea behind Puralek +:puralek:writing: +%date 2020-10-13 22:07

      +

      i realized that this is about organizing information, but thats also literally the purpose of the data involved in creating kitaab. its important to remember to distinguish between the mix of meta data and data held in this "book" and all the data that is produced in using computers. however the organization principles apply to both. hence i am starting to use this more like a log of all things. in doing so, the idea of Puralek and Kitaab become inextriabcly intertwined and must be synthesized into something more

      +

      this struck me during the reordering of /now and seeing now listed down there as an intergration idea makes sense, but not the scope i originally thought.

      +

      use /now to order the index page of Kitaab +some sort of averaging between total itetms and change in items

      +

      = Integration ideas = +generate a calendar that updates over nextcloud through task warrior events +Be able to link the Tasks list from a specific directory into the /now page +automation based on the above tags idea: feedreader > star > based on content action (add to jackett for music, save to images for image, etc) and have a living orgamism of information

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201015-2153.html b/src/kitaab-public/output/201015-2153.html new file mode 100644 index 0000000..1ad11ce --- /dev/null +++ b/src/kitaab-public/output/201015-2153.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + kendrit vim review + 201015-2153 +

      %title Vim Kendrit Review +:kendrit:vim:review: +%date 2020-10-15 21:53

      +

      So today marks the end of my vim kendrit. As always I'm wishing I did better at it, but I have a habit of setting aspirational goals. I like the two week format, given that this was the first one I did. While I didn't exclusively focus on Vim stuff, that was'nt my intention, and just having this kendrit set gave me a direction to turn to when I was not sure about what to focus on. I liked that. I also feel like I am at least a bit better at vim now. I made a contribution to vimwiki-sync to ensure that it runs on NeoVim too, and that's something! I've never had an PR be included before 😊 It felt really good to have finally contributed to an open source project and have it accepted. I also picked up on a few things that I'd be meaning to learn for a while, but I'm not yet fluent at them. I think if there's something I should improve on for Kendrit's it's writing stuff down more. That was a big help, but also I had to go through the source material a few times before I realized I really needed to write things down.

      +

      I hadn't thought of this before, but this does impact my ability to do dev hack generative stuff. Though I suppose to be fair I hadn't really been doing that for a while now. Perhaps I could find a way to incorporate that into my Kendrits.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201015-2222.html b/src/kitaab-public/output/201015-2222.html new file mode 100644 index 0000000..d39678b --- /dev/null +++ b/src/kitaab-public/output/201015-2222.html @@ -0,0 +1,196 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + kendrit puralek + 201015-2222 +

      %title kendrit-puralek +:kendrit:puralek: +%date 2020-10-15 22:22

      +

      201101-2014

      +

      = Goals =

      +
        +
      • HPI interface
          +
        • Automation to grab stuff from various services and have it be accessible ideally through commandline
        • +
        • Ability to add to Kitaab through Puralek
        • +
        +
      • +
      • Borg backup running continously
      • +
      • Ensure that grasp is running through nixOS +
      • +
      • bowl running on nixOS with all HDDs attached OR a replacement for bowl
      • +
      • Integrate all the old stuff that is in cold storage and make it accessible
      • +
      • Integrate stuff that is currently android only into Puralek
          +
        • Habits
        • +
        +
      • +
      • Taskwarrior + Calendar integration
      • +
      • build a startpage that features random things from Puralek
          +
        • album
        • +
        • article
        • +
        • kitaab page
        • +
        • rss feed?
        • +
        • quote
        • +
        • story?
        • +
        +
      • +
      • lifeTracker integration
          +
        • finances
        • +
        • location
        • +
        • browser history
        • +
        • sleep
        • +
        • media consumption
        • +
        +
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201015-2229.html b/src/kitaab-public/output/201015-2229.html new file mode 100644 index 0000000..436db08 --- /dev/null +++ b/src/kitaab-public/output/201015-2229.html @@ -0,0 +1,196 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + ops software + 201015-2229 +

      %title Services +:ops:software: +%date 2020-10-15 22:29

      +

      = Digital Infrastructure =

      +
        +
      • nextcloud (bowl)
          +
        • files
            +
          • calendar
          • +
          • photos
          • +
          +
        • +
        +
      • +
      • airsonic (bowl)
      • +
      • wallabag (bowl)
      • +
      • taskwarrior (bowl)
      • +
      • gitea (cube)
          +
        • passwords
        • +
        +
      • +
      • blog (cube)
      • +
      • rss reader (feedbin.com)
      • +
      • Mastodon (hackers.town / merveilles.town)
      • +
      • Scuttlebutt (line / curve / box)
      • +
      • Habits (line)
      • +
      • Fava + Beancount (finances)
      • +
      • Syncthing
          +
        • this notebook
        • +
        • tiddlyWiki
        • +
        • drawing
        • +
        +
      • +
      • Telegram, Wire, Whatsapp, Signal, Matrix
      • +
      • Slack / Discord
      • +
      • AlgoVPN / wireguard
      • +
      • OSMAnd
      • +
      +

      = Less used =

      +
        +
      • Anki
      • +
      • Duolingo
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201015-2239.html b/src/kitaab-public/output/201015-2239.html new file mode 100644 index 0000000..3c2b84a --- /dev/null +++ b/src/kitaab-public/output/201015-2239.html @@ -0,0 +1,187 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + ▔▕▛▐▛▖▗▐ pirate //185.21.216.149 //192.168.1.6 //192.168.1.6 + 201015-2239 +

      %title Archive pirate data +:▔▕▛▐▛▖▗▐:pirate: +%date 2020-10-15 22:39

      +

      = Status =

      +
        +
      • Jackett hooked up to redacted
      • +
      • Lidarr doesnt seems to connect to transmission on tri
      • +
      • Lidarr does connect to Jackett on bowl
      • +
      • Lidarr does not need a local list if q0x3f@geryon.feralhosting.com:~/scripts/music-pull works well
      • +
      • sshfs configured to tv-seed and music-seed, needs to be initialized on boot/permanent??
      • +
      • not sure how the lidarr/▘▙▔▚▖▗▜▟ import into kodi/airsonic works
      • +
      • ▒▞▕▞▒▓ not working
      • +
      +

      = Notes =

      +
        +
      • need to configure ▖▗▓▜▓▚▛, bowl tv mnt points to share to kodi
      • +
      • need to find a way smarter way to grab files, eventually i'll need to clear music-seed without redownloading all of it. perhaps store the list of already grabbed folders and diff with remote
      • +
      • notification for beet failures, with beet running in a tmux screen
      • +
      • configure cron for startup on these services (currently sitting tmux screen 1)
      • +
      • mono installed
      • +
      +

      = even older =

      + +

      Seems Lidarr and Radarr both require me to point them at my current collection and have the downloader be remote. this isn't such a big problem as I can just install them on my laptop, and run them over localhost, no proxy necessary. i can keep jackett installed remotely and use that as the converter. this should hopefully make it easier to keep my libraries intact as well.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201015-2306a.html b/src/kitaab-public/output/201015-2306a.html new file mode 100644 index 0000000..08323a5 --- /dev/null +++ b/src/kitaab-public/output/201015-2306a.html @@ -0,0 +1,171 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + travel + 201015-2306 +

      %title Travel +:travel: +%date 2020-10-15 23:06

      +

      Adventures in exploration

      + + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201015-2313.html b/src/kitaab-public/output/201015-2313.html new file mode 100644 index 0000000..f53cfe1 --- /dev/null +++ b/src/kitaab-public/output/201015-2313.html @@ -0,0 +1,163 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing punya + 201015-2313 +

      %title Invincible Computing +:writing:punya: +%date 2020-10-15 23:13

      +

      Computers are fragile things. Data is lost, for either hardware or software reasons. Software goes out of date, hardware becomes obsolete. +Why do we put up with this? +I want to be able to point any computer that I rightfully have ownership of, point it to a server of mine, and be jacked right back into my setup.

      +

      As a developer and enthusiast I refuse to have to configure my tools over and over again. I learn them deeply and set them up to be exactly how I want. +But I should only go through that process once. And just like the hammer of Thor, I should be able to summon them from anywhere. +That is the goal.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201017-1546.html b/src/kitaab-public/output/201017-1546.html new file mode 100644 index 0000000..dcfb446 --- /dev/null +++ b/src/kitaab-public/output/201017-1546.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev PR idea android + 201017-1546 +

      %title Taskwarrior Android Changes +:dev:PR:idea:android: +%date 2020-10-17 15:46

      +

      Instead of reports showing various different taskwarrior reports, have it show by project and be configurable

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201018-2128.html b/src/kitaab-public/output/201018-2128.html new file mode 100644 index 0000000..8c9f999 --- /dev/null +++ b/src/kitaab-public/output/201018-2128.html @@ -0,0 +1,175 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev pebble + 201018-2128 +

      %title voiceNote +:dev:pebble: +%date 2020-10-18 21:28

      +

      A VoiceNote application that creates a new text note with the title and rest of the dictation to your phone as a txt file saved wherever you want it, optionally through some template.

      +

      This is going to need:

      +
        +
      • Transcription API calls
      • +
      • Sending data to phone
      • +
      • Handling the data once on the phone (companion app?)
      • +
      +

      Some useful links:

      + + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201018-2141.html b/src/kitaab-public/output/201018-2141.html new file mode 100644 index 0000000..f6abed4 --- /dev/null +++ b/src/kitaab-public/output/201018-2141.html @@ -0,0 +1,160 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + pebble dot + 201018-2141 +

      %title Replacement Glass +:pebble:dot: +%date 2020-10-18 21:41

      +

      Need a 35.5mm width and 0.5mm thickness sapphire glass replacement. +Will probably need 1mm take to secure it back to the I-ring +Alternatively Suguru could work

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201018-2147.html b/src/kitaab-public/output/201018-2147.html new file mode 100644 index 0000000..2baa7da --- /dev/null +++ b/src/kitaab-public/output/201018-2147.html @@ -0,0 +1,170 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + pebble craft dot + 201018-2147 +

      %title The God Pebble +:pebble:craft:dot: +%date 2020-10-18 21:47

      +

      Endgame:

      +
        +
      • waterproof
          +
        • Suguru sealed
        • +
        • O-capped buttons (not sure if possible)
        • +
        +
      • +
      • Sapphire glass (polarized?)
      • +
      • HR Smart Strop
      • +
      • Higher battery capacity
      • +
      • NFC Payments
      • +
      • Take calls through the microphone
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201018-2232.html b/src/kitaab-public/output/201018-2232.html new file mode 100644 index 0000000..86e16e3 --- /dev/null +++ b/src/kitaab-public/output/201018-2232.html @@ -0,0 +1,166 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + ops cli + 201018-2232 +

      %title Linux Debugging +:ops:cli: +%date 2020-10-18 22:32

      +

      = Posix =

      +
        +
      • /etc/ stores a list of config files for the software you have installed
      • +
      • We can determine most log file locations, from config files
      • +
      +

      = Systemd =

      +
        +
      • /etc/systemd/system shows you all the system services running
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201018-2304.html b/src/kitaab-public/output/201018-2304.html new file mode 100644 index 0000000..efbbc18 --- /dev/null +++ b/src/kitaab-public/output/201018-2304.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + ops cube + 201018-2304 +

      %title Memory Usage on cube +:ops:cube: +%date 2020-10-18 23:04

      +

      When I logged in, checking htop didn't reveal that gitea was running out of memory. it was sitting around 250mb of usage, well within what is available.

      +

      Restarting gitea, disabling hypercore and dat because they're broken and old has resolved the current problem

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201019-1905.html b/src/kitaab-public/output/201019-1905.html new file mode 100644 index 0000000..35db629 --- /dev/null +++ b/src/kitaab-public/output/201019-1905.html @@ -0,0 +1,190 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + nix dev ops + 201019-1905 +

      %title NixOS Quick Tips +:nix:dev:ops: +%date 2020-10-19 19:05

      +

      install a package: +nix-env -i hello <-- not reproducible and hence not advisable + or
      +edit /etc/nixos/configuration.nix to ensure system wide install +nixos-rebuild switch <-- create new generation +nixos-rebuild test <-- only active while computer on

      +

      sudo nixos-rebuild test -I nixpkgs=~/usr/nixpkgs/ + ^-- use local repo to build pkgs

      +

      find out where in the store a binary is: +readlink -f $(which hello)

      +

      search packages +nix-env -qaP '.*hello.*' + or +nix search <pkg>

      +

      search nix package options +nixos-option <option>

      +

      clear up space: +nix-collect-garbage -d

      +

      upgrade to new channel: +nix-channel --list # show what version we're on +nix-channel --add https://nixos.org/channels/nixos-XX.XX nixos +nix-channel --update +nixos-rebuild switch

      +

      use a package through nix-shell: +nix-shell -p <package>

      +

      list generations +nix-env --list-generations

      +

      list installed packages +nixos-option environment.systemPackages + or +nix-env --query

      +

      install a nixOS .nix file through nix package manager +nix-env -f nvim.nix -i neovim

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201019-2020.html b/src/kitaab-public/output/201019-2020.html new file mode 100644 index 0000000..74b01a8 --- /dev/null +++ b/src/kitaab-public/output/201019-2020.html @@ -0,0 +1,263 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + recipe fermentation buchi + 201019-2020 +

      %title Buchi Flavors +:recipe:fermentation:buchi: +%date 2020-10-19 20:20

      +

      == 14/10/20 5th Batch == += Blueberry cream = +Same as before

      +

      = Mango + Pear = + 1 mango + 2 pear blitzed (only a lil added)

      +

      = Straw + Lime = +Blitzed strawberry 250g +Juice of some lime

      +

      = Pear + Apple x2 = +Blitzed pear (Only buy 1 of these!) +Blitzed apple (Only buy 1 of these!) +Some lime juice

      +

      = flavors ideas = +lime + mint +lime + ginger +vanilla, banana, blueberry, cinnamon, peach, basically any fruits +look into heating flavors, adding sugar before 2nd ferment

      +

      = 21/09/20 4th batch = += Blueberry cream = +Blue bottle +same as below

      +

      = Tropical blast = +Red bottle +250g strawberry

      +
        +
      • half chopped
      • +
      • half crushed and heated +half a pineapple, chopped +some lemon +some lime +some blueberry
      • +
      +

      = Pineapple + passionfruit + lime = +Green bottle +quart a pineapple, blitzed +2 passionfruits +juice of 2 limes

      +

      = Kiwi + Lemon = +Blue bottle +3 kiwis, blitz +juice of 1 lemon

      +

      = Pineapple swirl = +quart a pineapple, blitzed +some kiwi +some lemon +some lime

      +

      = 23/08/20 3rd batch = += Blueberry Cream = +230g blueberry + turned into jam + heated with 1 cup water + crushed + a little sugar + 1 cap vanilla extract +3rd full batch

      +

      = Strawberry Cream = +250g strawberry + turned into jam + same steps as blueberry +3rd full batch

      +

      = Lemon Mint Musk = +3 full limes from jj +5 fresh mint leaves +half a pack dried mint +3rd full batch

      +

      = Banana Cream = +2 full bananas +1 cap vanilla extract +3rd full batch

      +

      = 3rd batch first stage 09/08/20 = +Madura organic green tea +All boxed water

      +

      = Review of 22/07 batch = +all undrinkably sour, should have re-made from the first stage

      +

      = Strawberry 22/07/20 = +~500g strawberry, chopped +about 1/3rd bottle +Diluted water batch

      +

      = Citrus 22/07/20 = +Oca/Orange blend +Half a large orange +3 chopped Ocas +Diluted water batch

      +

      = Orange OG 22/07/20 = +Ginger/Tumeric/Orange blend +Half a large orange +Diced ginger + tumeric 50/50 +about a 1/4th of the bottle +Diluted water batch

      +

      = The OG 12/07/20 = +Tumeric/Ginger blend +Diced, roughly 50/50 +About 1/4th the bottle

      +

      = Berry Buch 12/07/20 = +Strawberry + Blueberry blend +250g strawberry, diced +125g blueberries smushed +Around 1/3rd of the bottle

      +

      = Spiced Fruit 12/07/20 = +Strawberry, Pomogranite, Blueberry and Ginger +200g strawberry, diced +100g blueberry, smushed +1 pomogranite, sorta smushed +a teaspoon of ginger, diced and smushed +About 1/3rd of a small bottle

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201019-2038.html b/src/kitaab-public/output/201019-2038.html new file mode 100644 index 0000000..9b4a728 --- /dev/null +++ b/src/kitaab-public/output/201019-2038.html @@ -0,0 +1,157 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + bot dev nix + 201019-2038 +

      %title Alert when nixpkgs unstable is unavailable +:bot:dev:nix: +%date 2020-10-19 20:38

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201019-2220.html b/src/kitaab-public/output/201019-2220.html new file mode 100644 index 0000000..b6b6a28 --- /dev/null +++ b/src/kitaab-public/output/201019-2220.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + link pebble hardware + 201019-2220 +

      %title Pebble Battery Replacement +:link:pebble:hardware: +%date 2020-10-19 22:20

      +

      This website https://pebblejunkies.com/how_to-s.html has useful links

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201019-2221.html b/src/kitaab-public/output/201019-2221.html new file mode 100644 index 0000000..595ac52 --- /dev/null +++ b/src/kitaab-public/output/201019-2221.html @@ -0,0 +1,163 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + ferment experiment + 201019-2221 +

      %title Kimchi Batch 2 +:ferment:experiment: +%date 2020-10-19 22:21

      +

      = Spices = +1 cup gochugaru +1 half white onion +whole head of garlic +a chunk of ginger +2 Shallots, thinly sliced

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201020-1926.html b/src/kitaab-public/output/201020-1926.html new file mode 100644 index 0000000..84e6700 --- /dev/null +++ b/src/kitaab-public/output/201020-1926.html @@ -0,0 +1,161 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing nix micro blog + 201020-1926 +

      %title Amazed at the NixOS Community +:writing:nix:micro:blog: +%date 2020-10-20 19:26

      +

      Even by FOSS zealot standards, I run an esoteric combination of hardware and software. My interests go beyond just "getting things done"; I have a strange fascination with tools themselves. I specifically choose tools I can customize to fit my hand like glove, and the FOSS world has plenty of choices for those so inclined. +This obsession with obscurity means I end up playing with software that looks like an ASCII video game, but is actually a music tracker, emulates modular synthesizers or is a DSL in an already esoteric programming language for livecoding +Even when it comes to hardware, I use a phone you probably haven't heard of (it has a physical keyboard! in 2020!), and my smartwatch is literally no longer available for purchase, that I revived through a battery transplant.

      +

      And yet, the NixOS community has packages for all of these. There's a derivation of the Pebble SDK, TidalCycles and VCV-Rack. It's awesome. Even though they don't natively package all the vim plugins I'm using, I've gotten the hang of updating nixpkgs to include these plugins, and I've even made a couple PRs so they are available to the wider community! I didn't think the intersection between FOSS zealots who use NixOS, like livecoding or are die-hard Pebble fans would be greater than 1, but here I am😊

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201021-2043.html b/src/kitaab-public/output/201021-2043.html new file mode 100644 index 0000000..60af54a --- /dev/null +++ b/src/kitaab-public/output/201021-2043.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing story + 201021-2043 +

      %title Somewhere at the end of History +:writing:story: +%date 2020-10-21 20:43

      +

      History was already over, but there aren't any endings. There never really were. Tomorrow always beckons, and things inevitably continue to happen. That's where I found myself. Just, happening at the end of history. With no reference to point to, I couldn't tell you what was different. Not even if I wanted to. Anyway, I'm sure you've done enough of this existing thing yourself to figure it out. Things were. How else do I describe it? Existence is. Even at the end of history. There isn't any other way to put it, not now, not before, and certainly not after. Look, look how our language became antiquated. Especially now it is illequiped to describe my time. For even though I can speak of before and now and after, there isn't really any. Distinction I mean. Now was now and will continue to be now, not before, not after. +And yet, if history is the chronicalling of time, haven't I just contributed a piece?

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201021-2102.html b/src/kitaab-public/output/201021-2102.html new file mode 100644 index 0000000..068a033 --- /dev/null +++ b/src/kitaab-public/output/201021-2102.html @@ -0,0 +1,474 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + jrnl index + 201021-2102 +

      %title Jrnl Index +:jrnl:index: +%date 2020-10-21 21:02

      +

      = Generated Tags =

      +

      == jrnl ==

      + + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201021-2233.html b/src/kitaab-public/output/201021-2233.html new file mode 100644 index 0000000..155bc6c --- /dev/null +++ b/src/kitaab-public/output/201021-2233.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing kendrit + 201021-2233 +

      %title Why Kendrit +:writing:kendrit: +%date 2020-10-21 22:33

      +

      I bounce from project to project so much because there is a lot I want to do. This often leads to thrashing and not actually doing anything. So in order to Get Things Done™ I needed a way to focus on larger goals over longer periods of time. Hence Kendrit, literally translated as "To Center".

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201025-2352.html b/src/kitaab-public/output/201025-2352.html new file mode 100644 index 0000000..e13996e --- /dev/null +++ b/src/kitaab-public/output/201025-2352.html @@ -0,0 +1,180 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dvlg dev readImap kendrit puralek + 201025-2352 +

      %title readImap dvlg +:dvlg:dev:readImap:kendrit:puralek: +%date 2020-10-25 23:52

      +

      = tasks | pro:readImap =

      +
        +
      • [X] finish read-imap in spellbook #b4a148e7
          +
        • [X] parse email msgs #0e629167
        • +
        +
      • +
      • [X] import writing into kitaab #ea0f2f4d
      • +
      +

      = done = +download emails using email and imaplib in python +save to out file using email.generator.Generator(fp) +can read file through emails through email.parser.Parser(fp)

      +

      = parsing = +for part in msg.walk(): +r = str(part.get_payload(decode=True))

      +

      = todo =

      +
        +
      • avoid bytes and empty parts
      • +
      • differentiate between links and passages/comments
      • +
      • read tags from identified link blocks
      • +
      • average links per day
      • +
      • most common tag
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201031-0042.html b/src/kitaab-public/output/201031-0042.html new file mode 100644 index 0000000..01c1fb9 --- /dev/null +++ b/src/kitaab-public/output/201031-0042.html @@ -0,0 +1,162 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing phil way + 201031-0042 +

      %title Systems, not Goals +:writing:phil:way: +%date 2020-10-31 00:42

      +

      One of the founding principles by which I organize my life (at least rn). It's not a difficult concept. Implementing it is always personal though. Everybody has their own desired consequences that they solve in their own ways. It's part of what makes people beautiful.

      +

      What I mean by this is primarily that goals are ephmeral. Once achieved they vanish, as though that is the end of the problem, or action, or even outcome. The heroes journey is always cyclical. There are no level ups in real life, you continue with the tools you've delevoped. So build tools.

      +

      Architect systems of processes such that you can achieve your "goals" reliably, consistently. If a goal is of any value, in most cases it is worth repeating; better. So don't worry about how far you've come, just keep journey-ing. Embrace your ability to instantiate change. Create! Destroy! You are the opponent of Entropy! You cannot win, but at least enjoy the battle.

      +

      You get the idea.

      +

      "What is the purpose of dance?" - Alan Watts

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201031-0111.html b/src/kitaab-public/output/201031-0111.html new file mode 100644 index 0000000..5825e43 --- /dev/null +++ b/src/kitaab-public/output/201031-0111.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + place people strangers + 201031-0111 +

      %title Scratch Bar +:place:people:strangers: +%date 2020-10-31 01:11

      +

      We met Graham at the bar. Big long beard, really nice guy. He serves drinks.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201031-0114.html b/src/kitaab-public/output/201031-0114.html new file mode 100644 index 0000000..8d58cb2 --- /dev/null +++ b/src/kitaab-public/output/201031-0114.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev meta kitaab taskwiki python + 201031-0114 +

      %title Kitaab integration with Task Warrior +:dev:meta:kitaab:taskwiki:python: +%date 2020-10-31 01:14

      +

      Link text to Task warrior tasks in Kitaab. Maybe there is a description element for tasks in the wiki, or perhaps write a way to refer to specific tasks in Kitaab.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201101-2014.html b/src/kitaab-public/output/201101-2014.html new file mode 100644 index 0000000..d841159 --- /dev/null +++ b/src/kitaab-public/output/201101-2014.html @@ -0,0 +1,180 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + kendrit puralek review + 201101-2014 +

      %title Kendrit Puralek Review +:kendrit:puralek:review: +%date 2020-11-01 20:14

      +

      Honestly, this kendrit was sort of a failure. I had a large list of things I wanted to do and didn't really do any of them. It's a little upsetting. +I'm not sure if this can be totally blamed on the Kendrit model yet, as this was a period that was notoriously bad for my sleep, leaving me drained of any useful energy before work let alone after.

      +

      I recorded the list of items I didn't complete for future reference below

      +

      = tasks =

      +
        +
      • set auto upload for pictures
      • +
      • habits -> Kitaab
      • +
      • Shaarli ▕░░▔▞▖▗ -> MAM
      • +
      • Shaarli ▕▝▟▛▘▙▟ -> Headphones
      • +
      • grasp running through systemd
      • +
      • new file for each grasp
      • +
      • grasp templates with & escape
      • +
      • import tiddlywiki into kitaab
      • +
      • telegram2rss
      • +
      • huginn
      • +
      • Kobo annotations -> Kitaab
      • +
      • Wallabag annotations -> Kitaab
      • +
      • Shaarli -> Kitaab
      • +
      • install nixos bowl
      • +
      • back up data to borg
      • +
      • set up a template/snippet for gratitude and review jrnl entries
      • +
      • pull spellbook scripts from homeschick
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201103-2109.html b/src/kitaab-public/output/201103-2109.html new file mode 100644 index 0000000..cb01dcb --- /dev/null +++ b/src/kitaab-public/output/201103-2109.html @@ -0,0 +1,170 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + kendrit ops + 201103-2109 +

      %title kendrit-ops +:kendrit:ops: +%date 2020-11-03 21:09

      +

      New Kendrit, hopefully this one goes better. +Intimately related to the previous Kendrit, but not quite so focused on HPI as general ops regarding my infrastructure as it seems to have been falling down a lot lately.

      +

      Trying to have fewer tasks that are more important.

      +

      = Goals =

      +
        +
      • Get nixOS on bowl
      • +
      • Weekly and Monthly backups of bowl
          +
        • using Borg and Blackblaze
        • +
        +
      • +
      • Wiregaurd installation on helix to access bowl from anywhere
      • +
      • Update keyboard keymap
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201105-1933.html b/src/kitaab-public/output/201105-1933.html new file mode 100644 index 0000000..d686085 --- /dev/null +++ b/src/kitaab-public/output/201105-1933.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing phil + 201105-1933 +

      %title On Noticing Your Own Reactions +:writing:phil: +%date 2020-11-05 19:33

      +

      By paying attention to how you feel, one begins to learn many things. One of these is the distinction between like and dislike. One can learn valuable information about oneself by noticing when we like and dislike things. This too is a spectrum, but nonethelss it can be distinguished at ends. Like and dislike. We learn to do more of what we enjoyed, obviously. We also learn an important lesson from what we dislike. We shouldn't learn the opposite lesson though: To turn away and do less of what we don't like. Instead, our goal should be to understand why. What part of ourselves are we afraid of that we experience fear of experiences. Instead we should seek to understand our discomfort and engage with it. Learn from it. That cannot happen if it is discarded. So look at it, don't through away your own reactions. Even if it is a bad reaction. Seek to introduce it into your life in the smallest manner you can handle. And work from there. +Heavy storms make deep roots.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201105-1945.html b/src/kitaab-public/output/201105-1945.html new file mode 100644 index 0000000..3ce9ffd --- /dev/null +++ b/src/kitaab-public/output/201105-1945.html @@ -0,0 +1,163 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + blog web notes //`, `ipfs //`, or `gemini //` hell Google is getting rid of `http + 201105-1945 +

      %title The New Internet is being born +:blog:web:notes: +%date 2020-11-05 19:45

      +

      I've read many articles about the Old Internet being dead (those that write those articles seem implicitly aware that the "Now Internet" sucks) +I have a different take. The New Internet is taking root. If you know where to look you can smell the trees.

      +

      Something similar is the "Cozy Web". You probably have carved out your own cozy web too. "Private" groups filled with your friends. Things that you share with select group(s) and (generally) the corporations that provide that service. Messenger, Telegram, Slack, Discord, $X DMs, Snapchat, Zoom. Maybe you're down with technology or blessed by the Priesthood of Programmers and know someone that runs their own infrastructure, which is certainly much comfier as far as I'm concerned. Whatever it may be, the important factor in the Cozy web is that it's ▓▓▘▙▕▛▟▘▙.

      +

      The New Internet must happen in public by definition. It's already taking shape. Digital Gardens or Online Personal Notebooks. Some small blogs. IndieWeb. There's (generally) nothing to sell, no obligation to buy. They are welcoming spaces filled with personal expression. Many are just electronic Business Cards, some are dense tome's of intently researched knowledge. Some are Parks and some are Libraries. There are still certainly stalls and small businesses too. But there's no Amazon. No endless trackers. No enmourous data centres. Well, at least in my dreams

      +

      The tools obviously still need work. Creating and designing a website is not an easy task. Ensuring that it stays running is an ongoing obligation. Most people still don't know about hyper://, ipfs://, or gemini:// hell Google is getting rid of http://! Yet even the alternatives have requirements beyond simply knowing them. Technical skills to use them, resources to have a constantly running computer, dedicated internet and electricity. So even if you can build websites, why would you choose this unknown alternative with all these related problems when you can just pay someone to deal with it.

      +

      But it is possible. Community oriented services. Public and Personal spaces wrapped in one. I'm trying to build my own Public Personal space here too. Working with the garage door up.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201105-2043.html b/src/kitaab-public/output/201105-2043.html new file mode 100644 index 0000000..81011eb --- /dev/null +++ b/src/kitaab-public/output/201105-2043.html @@ -0,0 +1,166 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + hardware craft + 201105-2043 +

      %title Desk Companion +:hardware:craft: +%date 2020-11-05 20:43

      +

      I want a little desk companion out of my RPi 0. It needs a (e-ink) screen, some batteries, and a (hand crafted) wooden holder.

      +

      I'm not sure what to make it display += Ideas =

      +
        +
      • Weather Calendar Tasks (Dashboard)
      • +
      • Different plants and their information
      • +
      • Tamogatchi
      • +
      • Pomodoro Timer
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201105-2104.html b/src/kitaab-public/output/201105-2104.html new file mode 100644 index 0000000..50ec2bd --- /dev/null +++ b/src/kitaab-public/output/201105-2104.html @@ -0,0 +1,161 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + tools cli + 201105-2104 +

      %title Borg instructions +:tools:cli: +%date 2020-11-05 21:04

      +

      = Install & Quick Start = +pip3 install borgbackup +borg init -e=none /path/to/repo +borg create /path/to/repo::Wallabag /var/lib/docker/volumes/x/data

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201105-2306.html b/src/kitaab-public/output/201105-2306.html new file mode 100644 index 0000000..a5d93ba --- /dev/null +++ b/src/kitaab-public/output/201105-2306.html @@ -0,0 +1,164 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + puralek cli sql backup + 201105-2306 +

      %title Wallabag Backup +:puralek:cli:sql:backup: +%date 2020-11-05 23:06

      +

      Had to enter the docker container +Go to a reasonable place in the filesystem +Run + psql -U postrges -l + pg_dump -U postgres $database > outfile +Then copy out of docker + sudo docker cp wallabag-db:/$database wallabag

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201105-2309.html b/src/kitaab-public/output/201105-2309.html new file mode 100644 index 0000000..79cb01f --- /dev/null +++ b/src/kitaab-public/output/201105-2309.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + docker cli snip + 201105-2309 +

      %title Docker cp +:docker:cli:snip: +%date 2020-11-05 23:09

      +

      docker cp <CONTAINER>:<SRC> <DEST>

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201105-2316.html b/src/kitaab-public/output/201105-2316.html new file mode 100644 index 0000000..b3a50f7 --- /dev/null +++ b/src/kitaab-public/output/201105-2316.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + idea dev vim contribution question + 201105-2316 +

      %title vim zettel Question +:idea:dev:vim:contribution:question: +%date 2020-11-05 23:16

      +

      How to go back to previous note after ZettelNew?

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201105-2321.html b/src/kitaab-public/output/201105-2321.html new file mode 100644 index 0000000..ca89148 --- /dev/null +++ b/src/kitaab-public/output/201105-2321.html @@ -0,0 +1,163 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + cli backup + 201105-2321 +

      %title Nextcloud Backup +:cli:backup: +%date 2020-11-05 23:21

      +

      Because I'm running a snap I can do: + sudo snap stop nextcloud + sudo cp /var/lib/snap/.. ./ +But because I'm paranoid I also did: + sudo nextcloud.export + sudo cp /var/lib/snap/common/export/* ./

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201105-2338.html b/src/kitaab-public/output/201105-2338.html new file mode 100644 index 0000000..5fe535d --- /dev/null +++ b/src/kitaab-public/output/201105-2338.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + idea contribution vim dev + 201105-2338 +

      %title vim zettel last 5 edited +:idea:contribution:vim:dev: +%date 2020-11-05 23:38

      +

      "Search" and insert the last X edited files. +Because when I'm doing things I create an atomic note for each, but I want to be able to link them later.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201105.html b/src/kitaab-public/output/201105.html new file mode 100644 index 0000000..6e0d98f --- /dev/null +++ b/src/kitaab-public/output/201105.html @@ -0,0 +1,166 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + gratitude + 12 Sep, 21 +

      %title 201105 jrnl +:gratitude: +%date 051120 00:31

      +

      today i am grateful for

      +
        +
      • all the data i still have from my youth
      • +
      • the friends that put up (and continue to put up) with my insufferable ass
      • +
      • napping for like 2 hours during work
      • +
      • still getting praised at work
      • +
      • all the people who've made me who i am now
      • +
      • all the people ive yet to meet who will also change my life
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201106-0258.html b/src/kitaab-public/output/201106-0258.html new file mode 100644 index 0000000..d5707fc --- /dev/null +++ b/src/kitaab-public/output/201106-0258.html @@ -0,0 +1,164 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + blog writing web + 201106-0258 +

      %title 3 Years of Owning a Server +:blog:writing:web: +%date 2020-11-06 02:58

      +

      Once I'd built my first computer (which was actually very late, perhaps sometime in 2016) I needed to figure out what to do with my old one. My old one was a mid-spec laptop from 4+ years prior to that, but it had a decent graphics card at the time that allowed me to play some of the games I'd wanted to -- Though in part the small specs lead me to prefer indie games and roguelikes, the only games I'm even remotely interested anymore. +I figured I'd try and configure it to run as a server. By this point I'd been running exclusively Linux for a couple years and had come across interesting server software. Perenially interested in Privacy and Free Software, I decided to see what I could muster up. +Thus began my on-going experiment with Docker. At the time I knew just enough system adiminstration to be dangerous and hadn't previously set up nginx. Since Docker seemed a lot easier, that's what I went with. +The docker instances I stood up then are the very same images that have been running on my server this entire time, I'm a little ashamed to admit. They're horrible out of date, and basically the only sort of server admin work I did was write scripts so they boot on startup and kick them when they fell down. Being the only one who used this software made that a totally fine solution for me. +Now, I'm trying to level up once again. I've learnt a lot more about server administration, and I'm trying to achieve 201015-2313. The sad part is what stirred me to finally commit to doing this whole process (Backup, Automation and Reliable builds) is losing all the data that I had stored in my bookmarks server since it's inception. That place was a comfy little treasure trove for me I could turn to when I finally needed a tool, book or guide in order to accomplish something. It was a personally curated springboard from which whenever I had an idea, I knew where I should go. It was, in some senses, my Google. Rather than search for something through the public search indexes, I would always choose to search this first. +And now it's gone. And I never want to let that happen again. So here I am in the dead of night checking all my backups before wiping this ancient machine to imbue it with new life and new power. +I hope I don't lose any more data, ever. It's a small step for me, in removing a thorn that has been deeply embedded in my technical prowess. 201106-0311 and all.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201106-0311.html b/src/kitaab-public/output/201106-0311.html new file mode 100644 index 0000000..f09394a --- /dev/null +++ b/src/kitaab-public/output/201106-0311.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + phil advice + 201106-0311 +

      %title Controlled Difficulty +:phil:advice: +%date 2020-11-06 03:11

      +

      Growth requires difficulty. Induce it in your life, in whatever portion you can sustain in order to learn and grow from the experience

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201108-0205.html b/src/kitaab-public/output/201108-0205.html new file mode 100644 index 0000000..e45003a --- /dev/null +++ b/src/kitaab-public/output/201108-0205.html @@ -0,0 +1,160 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + ops bowl hardware + 201108-0205 +

      %title bowl dying +:ops:bowl:hardware: +%date 2020-11-08 02:05

      +

      bowl is certainly nearing teh end of it's life. It has served me well. I will need to replace it imminently.

      +

      I feel so much weaker without it. I need it back now. Currently it will only boot after waiting for around 10 minutes (HDD failure?) and even then the nix installer was flashing error messages (I know the installer works because I booted on a seperate laptop)

      +

      Luckily I have all my data backed up. I was going to wipe it anyway. maybe look into getting a replacement drive to boot off of while I think of what to do in terms of building out a NAS.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201108-2359.html b/src/kitaab-public/output/201108-2359.html new file mode 100644 index 0000000..4f1e522 --- /dev/null +++ b/src/kitaab-public/output/201108-2359.html @@ -0,0 +1,167 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + nix ops bowl review + 201108-2359 +

      %title What I learnt switching bowl to NixOS +:nix:ops:bowl:review: +%date 2020-11-08 23:59

      +

      bowl is on it's last legs. It will only boot after much cajoling. +After many false starts, I finally got it all working. I can't risk switching it off anymore, and I hope it doesn't overheat.

      +

      I created an install.sh script for legacy-bios with encrypted disk and a password, which is very cool +I want one for UEFI now too

      +

      I kept trying to change the names of the logical volumes and volume groups in LVM which is why I was running into issues +I learnt that GRUB 2.06 should contain the necessary patch for LUKS2 (it's been implemented already) +I couldn't figure out how to install shaarli. The package in nixpkgs is just creating the necessary files in /nix/store/-shaarli and I'm not sure how to configure nginx to use that yet. +I managed to install taskd server which has a nixOS wrapper for all the certs and stuff, but haven't got it to sync yet +I've installed nextcloud, but haven't recovered the backup yet.

      +

      I'm still not very confident in my abilities to run a server on nixOS, though this is a good learning opportunity. I don't quite understand all the settings and how to find them, but I've been reading a lot more .nix files which helps.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201118-1520.html b/src/kitaab-public/output/201118-1520.html new file mode 100644 index 0000000..dfcdce3 --- /dev/null +++ b/src/kitaab-public/output/201118-1520.html @@ -0,0 +1,157 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + bowl ops nix + 201118-1520 +

      %title +:bowl:ops:nix: +%date 2020-11-18 15:20

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201118-1522.html b/src/kitaab-public/output/201118-1522.html new file mode 100644 index 0000000..d11c89e --- /dev/null +++ b/src/kitaab-public/output/201118-1522.html @@ -0,0 +1,190 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + ops bowl nix reflection + 201118-1522 +

      %title Getting Web-Services to run on NixOS +:ops:bowl:nix:reflection: +%date 2020-11-18 15:22

      +

      = Summary = +Shaarli

      +
        +
      • Haven't configured a systemd service to ln -s the nix derivation yet
      • +
      +

      Wallabag

      +
        +
      • Upstream seems broken
      • +
      • Docker works, but data is not persistent
      • +
      • Find a way to use overlay so I can use an older version
      • +
      +

      Wireguard

      +
        +
      • broken on 20.09
      • +
      • not sure what to do
      • +
      +

      LUKS / LVM

      +
        +
      • does not mount the big partition
      • +
      • not sure why
      • +
      +

      Borg

      +
        +
      • Unconfigured
      • +
      • Need to restore nextcloud data
      • +
      • Most other data is missing
      • +
      +

      Basically I've learnt that running php web-apps are a nightmare, and that I don't really understand nginx, fastcgi, phpfpm at all really. +For the past ~2 weeks I've been trying to rebuild bowl to be running on NixOS, and I've come up against many difficulties, and lost all the data in both of these services...

      +

      I had issues with getting shaarli to read the environment variable as defined in it's nix derivation. So instead, Timo (the package maintainer) told me another solution is to just ln -s the package directory into somewhere it can read/write to since that's what the environment variable is supposed to do anyway. Once I did this it was easy enough to get Shaarli running. I did have to be careful with the nginx config because I'd accidentally disabled the API. Currently my Shaarli install

      +

      Wallabag has been another story. It seems like upstream is broken because it's overwriting a php function (mb_string is the package and mb_str_replace is the function) that php says it can't overwrite.

      +

      Before I managed to get these to run on bare metal, I was using docker once again to run the services. But since Nix is declarative, and I have no idea how docker volumes work, it wiped everytime I ran nixos-rebuild switch, which remains a problem I haven't quite solved. I somehow managed to get the docker install working, but I don't believe it to be declarative because I did exec into the docker container and ran some esoteric database migration in order to get it to work.

      +

      Further more my main issue currently is that in order to do anything in nixOS I need to be able to write the language, understand the options, and then all the services that the options declaratively define. The way I currently run any of the infrastructure is through googling around and hoping to find a module or someone else trying to run the same software, but more profficient at nixOS than I am. That needs to change, since even for services written in easy to run languages like Go, I can't write the nix file to get them to work.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201119-1157.html b/src/kitaab-public/output/201119-1157.html new file mode 100644 index 0000000..caac90d --- /dev/null +++ b/src/kitaab-public/output/201119-1157.html @@ -0,0 +1,180 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + bowl nix ops + 201119-1157 +

      %title Ops tasks for bowl +:bowl:nix:ops: +%date 2020-11-19 11:57

      +

      = bowl =

      +
        +
      • wireguard +try and install latest linux kernel without rebooting, and then include wireguard.nix

        +
      • +
      • wallabag +overlay the pkg to include the patch that deals with mb_str_replace

        +
      • +
      • shaarli +hack the system to set password

        +
      • +
      • nextcloud +move dataDir to /data and import backup

        +
      • +
      • navidrome +change dataDir to data, copy over music, grant permissions

        +
      • +
      • run ▜▓▛▛▕▓▞▓▞▐, beats, and see if you can get huginn configured to connect to bowl

        +
      • +
      • run fava+beancount or alternative
      • +
      • run grasp server?
      • +
      • maybe setup telegraf agent?
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201121-1417.html b/src/kitaab-public/output/201121-1417.html new file mode 100644 index 0000000..1f2d199 --- /dev/null +++ b/src/kitaab-public/output/201121-1417.html @@ -0,0 +1,162 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + ops nix bowl + 201121-1417 +

      %title Shaarli Setup +:ops:nix:bowl: +%date 2020-11-21 14:17

      +

      So I finally got Shaarli all configured. It turns out the Network Redirection Error that I was facing had to do with nginx Server Blocks aka Virtual Hosts +Setting the port and IP address as the virtual host name during Shaarli setup led to some strange re-direction that neither FF nor Chrome were happy to display (though cURL didn't have any issues). I fixed this by disabling nextcloud which previously owned the non-port server host and made shaarli the only web-app running. This led to the redirect working fine and able to continue as normal. +The setup still isn't quite reproducible because I need to do ln -s $(nix eval nixos.shaarli.outPath)/* $dataDir to place all the shaarli files in the dataDir, then chown shaarli:shaarli $dataDir and finally cp config.php $dataDir/config.php to get everything running. +I had much more sucess with debugging after setting php_admin_value[error_log] = "/var/log/nginx/phpfpm.log" and using strace -p <phpfpm-pid> so that I actually knew what was going wrong. I learnt that when using root = pkgs.shaarli and setting SHAARLI_CONFIG even though shaarli does read the right config file, it doesn't seem to apply that to reading the data directory as defined by the config and was still trying to access the nix store data folder which was causing issues. +Anyways I think I now know enough that I should be able to re-configure everything pretty easily if it breaks. So Success!!

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201122-2142.html b/src/kitaab-public/output/201122-2142.html new file mode 100644 index 0000000..01c2ab1 --- /dev/null +++ b/src/kitaab-public/output/201122-2142.html @@ -0,0 +1,161 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + music gen theory + 201122-2142 +

      %title Chords +:music:gen:theory: +%date 2020-11-22 21:42

      +

      The reason we care about the degree of a note in the scale, is because we can use it to talk about different kinds of chords in a sequence +For the each key we can talk about it's chords. A good way to think about some songs, is major chords numbered by degree of the note. That way we can talk about the same chord progression in different keys.

      +

      hence, chord progressions can be written as numbers 1 - 6 +A chord progression and key unlocks your capacity to see the music matrix

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201128-1301.html b/src/kitaab-public/output/201128-1301.html new file mode 100644 index 0000000..dbfae2a --- /dev/null +++ b/src/kitaab-public/output/201128-1301.html @@ -0,0 +1,165 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing blog dstory + 201128-1301 +

      %title Dev Stories +:writing:blog:dstory: +%date 2020-11-28 13:01

      +

      In the interest of sharing Kitaab online I wanted to include more written explanations of my understanding. My idea is to write stories to accompany what I did, in the interest of solidifying my own understanding.

      +

      = ideas = +201128-1333a +Understanding Generative +201128-1456 +NixOS & the Responsibility of Power +mossnet +sealight.xyz

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201128-1326.html b/src/kitaab-public/output/201128-1326.html new file mode 100644 index 0000000..688482d --- /dev/null +++ b/src/kitaab-public/output/201128-1326.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + rocks box + 201128-1326 +

      %title Box Upgrade +:rocks:box: +%date 2020-11-28 13:26

      +

      I want to turn box into a music machine. Run SuperCollider + Tidal, Ardour + Synths, VCV-Rack and route things all around. I need a microphone to record things, an audio interface to work with and a powerful enough system to pull it all together. +box

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201128-1333a.html b/src/kitaab-public/output/201128-1333a.html new file mode 100644 index 0000000..26ca20e --- /dev/null +++ b/src/kitaab-public/output/201128-1333a.html @@ -0,0 +1,166 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dstory music generative writing + 201128-1333 +

      %title Getting to a Finished Song +:dstory:music:generative:writing: +%date 2020-11-28 13:33

      +

      I've learnt a few ways to make digital music now, but I haven't actually Finished a Song. All I have is ways to make noise. In order to record a song I need a good microphone.

      +

      I can create sounds in TidalCycles, VCV Rack, lsdj, and nanoloop. Soon I'll also have a norns too. +I need learn how to mix and produce a finished track through something like ardour or reaper. +I've been able to install some synths (helm) and route those to Ardour. +I need to learn how to create midi notes that are played through that synth +I've configured patchage to route midi to various applications and been able to control VCV Rack and Helm through midi +I need to learn how to use a sequencer effectively +I need to learn to use synths to create the sounds I want and turn those sounds into loops and those loops into tracks and those tracks into songs

      +

      I can see a path to through the tunnel

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201128-1456.html b/src/kitaab-public/output/201128-1456.html new file mode 100644 index 0000000..3791dfe --- /dev/null +++ b/src/kitaab-public/output/201128-1456.html @@ -0,0 +1,160 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dstory writing generative hardware + 201128-1456 +

      %title Building Norns +:dstory:writing:generative:hardware: +%date 2020-11-28 14:56

      +

      Early on in my foray into digital music, I decided I didn't want to use a DAW. Partially because I knew doing so on Linux would be limiting, partly because I like to do things differently. My proclivity for single purpose devices naturally got me excited about norns when I heard about it. Not being a musicion I found it hard to justify paying $800USD for what could turn out to be just a toy. +When I learnt about the DIY versioun pased on an RPi, I knew I had to try it. A toy like the norns is certainly worth a hundredish dollars. Even more exciting to go from "no electronics experience" to "i built a music machine from PCB up". +So I'm now that guy. Decided to learn how to read electronics schematics so that I can build a linux machine to avoid using a DAW on a different Linux machine.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201129-2055.html b/src/kitaab-public/output/201129-2055.html new file mode 100644 index 0000000..5ae5799 --- /dev/null +++ b/src/kitaab-public/output/201129-2055.html @@ -0,0 +1,184 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + sealight ops nix dstory //anish.lakhwara.com/posts/fireplace/) and I finally have a runnig matrix server that I plan to keep in production as much as I can. I worked out how to configure everything I wanted correctly by using these resources "chat.sealight.xyz + 201129-2055 +

      %title Getting Matrix Online +:sealight:ops:nix:dstory: +%date 2020-11-29 20:55

      +

      Finally taking steps in almost exactly 1 year since taking up the mantle of friend-hosting (https://anish.lakhwara.com/posts/fireplace/) and I finally have a runnig matrix server that I plan to keep in production as much as I can. I worked out how to configure everything I wanted correctly by using these resources:

      + +

      = It's Always DNS = +I had two significantly large hurdles; DNS, NixOS + ACME. I started with an SRV Record to redirect all requests to chat.sealight.xyz if they were trying to reach that instance. But I couldn't quite get this to work right, and then ending up switching to an imperative step which was:

      +

      echo '{ "m.server": "chat.sealight.xyz:443" }' > /<webroot>/.well-known/matrix/server

      +

      Which removed the need for the SRV file. At this point I had a working SSL installation of NixOS 19.09 with only a synapse server running. Great first step I thought.

      +

      = Or SSL for DNS = +Then I had the bright idea to update to 20.09 so that I could run the Element web client instead of Riot (now rebranded). That was naive in hindsight. ACME, it's nixOS module and even perhaps the underlying software logo may have bugs that made their way into 20.09 and these bugs occur specifically when upgrading from the older ACME client. In order to fix this I had to delete the old user account and started fresh. +It didn't help that I would often run into Rate Limiting due to the way the nixOS ACME module works. I had to be particularly careful when running a rebuild otherwise I'd hit the rate limit. This meant I couldn't just try random fixes and hope it worked. I really had to read the logs, come to understand what was happening and why (and in case it was a rate limit just wait 1 - 3 hours before doing anything). This was a useful experience.

      +

      These resources were especially helpful in debugging ACME issues:

      + +

      = Finally = +Once I fixed the Let's Encrypt requests being sent, I was left with a beautiful static site hosted at sealight.xyz, the matrix server that federates at chat.sealight.xyz; with all handles will be of the form @user:sealight.xyz, and an Element client running at element.sealight.xyz that points users to create an account at my instance by default.

      +

      If I'm being honest I still don't understand all the intracacies of my own configuration. NixOS does an excellent job of abstracting away so much of the configuration troubles. I'm finally beginning to understand how to do things with this tool. +However it cannot abstract away everything. I need to learn nginx configuration, and what the hell SNI, SRV and .well-known have in common that makes them able to mask the URL in handles.

      +

      = Next = +I need to configure monitoring agents and plan to go with the TIG Stack +Install the Slack Bridge to help my friends migrate +Install the Telegram / Discord bridge to consolidate my online profile

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201206-2150.html b/src/kitaab-public/output/201206-2150.html new file mode 100644 index 0000000..6842966 --- /dev/null +++ b/src/kitaab-public/output/201206-2150.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing blog + 201206-2150 +

      %title Taming Technology +:writing:blog: +%date 2020-05-13 21:50

      +

      there has been a common thread going through my mind of late that ive been meaning to write about for a while. originally i started with the idea of describing my own utilization of technology. the systems i\'ve set up to orchestrate my life; a tour of my personal digital infrastructure. and of course being a hipster computer nerd, the manner in which i use technology is partically fringe even within my own community, and especially so when compared to the average comput er user, but other than being at best mildly informative, i came to view it as self indulgent naval gazing -- afterall I already k now how that infrastructure works and have laid out many plans for how to improve it, surely my time would be better spent activel y improving it rather than explaining it (largely just to myself) again.", "then i moved on to pondering my grand debut in \"the i ndustry\" and wanted to get my thoughts in order about how I actually feel about it. this scared me because I worried my honest op inions of the surveillance industry (or \"silicon valley\" as it is colloquially referred to) would stain my chances at a job in t he very same place. i wish i was strong enough in my resolve to my ethical framework to make these comments under my \"real\" iden tity and maybe one day i will be, but today is not that day.", "from there i bounced to various cliche topics at the intersection of technology and mindfulness. digital detoxes, curtailing addicition to our smart phones, an introduction for the non-technical, how tragically easy it is to imagine better technology, media diets, and the murder (not death) of privacy and how to ressurect it all feature empty pages in my git repo. beyond repeating kitchsy blogspam my trouble with writing about these is that the problem s and solutions i see to technology go beyond any one of these issues, and even describing these issues evades a clear essence to what technology truly is.", "and so i embark on another rabit hole, but this time i emplore you to join in on the discussion.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201210-1913.html b/src/kitaab-public/output/201210-1913.html new file mode 100644 index 0000000..aa7433a --- /dev/null +++ b/src/kitaab-public/output/201210-1913.html @@ -0,0 +1,188 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + psych priv writing + 201210-1913 +

      %title What I want to talk to my Psych about +:psych:priv:writing: +%date 2020-12-10 19:13

      +
        +
      • sleep
          +
        • why am i not sleeping well?
        • +
        • what can i do about sleep (list things i am already doing)
        • +
        • it's causing many external problems
        • +
        +
      • +
      • work
          +
        • not motivated by work at all
        • +
        • not sure what to do with my career
        • +
        • 10 year plan to live on a boat
        • +
        +
      • +
      • moving houses
          +
        • tied to work
        • +
        • greta + stress
        • +
        • talking to jxN about it
        • +
        • sydney??
        • +
        +
      • +
      • finding friends
          +
        • having only one friend group makes me unhappy
        • +
        • ties into moving
        • +
        • strategies?
        • +
        +
      • +
      • feeling hollow again
          +
        • how to deal with all the systems i thought i had in place falling apart
        • +
        +
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201213-1641.html b/src/kitaab-public/output/201213-1641.html new file mode 100644 index 0000000..6feb501 --- /dev/null +++ b/src/kitaab-public/output/201213-1641.html @@ -0,0 +1,176 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing blog phil web + 201213-1641 +

      %title Refusing Rating +:writing:blog:phil:web: +%date 2020-12-13 16:41

      +

      I won't like, subscribe, comment, hit the bell icon, give 5 stars, a thumbs up, or other form of feedback. I'm sorry, I know it's helpful for your platform on . Even if I liked whatever service or content you provided, I (probably) still won't do it. I won't feed the data machine. It does not need more data. The aggregate effects of better calibrated surveillance apparatus are just worse for everyone. It will only grant the entrenched system more power. Metrics cease to be useful when they become goals, and doesn't know what else to do with metrics.

      +

      Living in the modern world requires compromises, which is why I am using the platform (and have the ability to leave a signal in the first place), but I see minimizing participation as beneficial. will still collect some unavoidable data from my interactions with them, and use this data for whatever they see fit. may also already have all your past data, but that doesn't justify handing over a continuous feed. Stop using the gambler's fallacy in regards to data privacy.

      +
        +
      • Not drip feeds of narcissim-enhancing like notifications.
      • +
      • Not gated communities built out of follower counts and verified check marks.
      • +
      • Not laser focused optimization of product ranking, and user {att,re}tention
      • +
      • Not peer evaluation that leads to financial, promotional or emotional consequences
      • +
      +

      I won't engage in these.

      +

      Instead, where appropriate I will engage in:

      +
        +
      • Personal recounts of similar experiences
      • +
      • Asking or answering questions and learning more
      • +
      • Expressing appreciation explicitly
      • +
      • Constructive criticism without being mean
      • +
      • Ambient support
      • +
      • Paid exchange and/or tips for DRM free media, excellent service or physical goods
      • +
      +

      You want signals? Make them humane, understand the context. Leave messages of collaboration. Refuse parasocial relationships. Make the data open, playful, and in service of the people to which that data belongs. Technology alone won't solve social problems, and in many cases will exacerbate them. Metrics are for systems not people. Reactions aren't signs of support. I will try to minimize the power these signals possess.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201215-1308.html b/src/kitaab-public/output/201215-1308.html new file mode 100644 index 0000000..15570e1 --- /dev/null +++ b/src/kitaab-public/output/201215-1308.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev blog idea + 201215-1308 +

      %title random subtitle +:dev:blog:idea: +%date 2020-12-15 13:08

      +

      make 2 or 4 lists of adjective + nouns to describe myself and put asthe subtitle to my blog, selected randomly from each list updated once a day

      +

      210124-0033

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201215-1310.html b/src/kitaab-public/output/201215-1310.html new file mode 100644 index 0000000..4c2e298 --- /dev/null +++ b/src/kitaab-public/output/201215-1310.html @@ -0,0 +1,160 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + story writing blog + 201215-1310 +

      %title Brighter futures series II +:story:writing:blog: +%date 2020-12-15 13:10

      +

      The bright orange sun had become a familiar but iritable compainion along my quest. a node under my network had failed and unfortunately the redundancy hadnt planned for this. I hadnt planned for this. The inscriptions in the stone shouldnt he allowed this to happen

      +

      = idea = +the imagining better future series is about a (female) solarpunk adventurer, told in the form of diary notes. she quests around byboat or by bike and lives a nomadic life. its post-walkway, default still exists (and should reflect current civ-tech) but is unbearable to her. she meets with other walkaways learning, sharing and creating art. its a loose plot for slow life, and the kind i wish one day to lead.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/201219-1825.html b/src/kitaab-public/output/201219-1825.html new file mode 100644 index 0000000..4054cec --- /dev/null +++ b/src/kitaab-public/output/201219-1825.html @@ -0,0 +1,184 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + recipe vegan + 201219-1825 +

      %title Vegan Chilli +:recipe:vegan: +%date 2020-12-19 18:25

      +

      = Ingredients =

      +
        +
      • 2 tablespoons extra-virgin olive oil
      • +
      • 1 medium red onion, chopped
      • +
      • 1 large red bell pepper, chopped
      • +
      • 2 medium carrots, chopped
      • +
      • 2 ribs celery, chopped
      • +
      • ½ teaspoon salt, divided
      • +
      • 4 cloves garlic, pressed or minced
      • +
      • 2 tablespoons chili powder*
      • +
      • 2 teaspoons ground cumin
      • +
      • 1 ½ teaspoons smoked paprika*
      • +
      • 1 teaspoon dried oregano
      • +
      • 1 large can (28 ounces) or 2 small cans (15 ounces each) diced tomatoes**, with their juices
      • +
      • 2 cans (15 ounces each) black beans, rinsed and drained
      • +
      • 1 can (15 ounces) pinto beans, rinsed and drained
      • +
      • 2 cups vegetable broth or water
      • +
      • 1 bay leaf
      • +
      • 2 tablespoons chopped fresh cilantro, plus more for garnishing
      • +
      • 1 to 2 teaspoons sherry vinegar or red wine vinegar or lime juice, to taste
      • +
      +

      = Instructions = + In a large Dutch oven or heavy-bottomed pot over medium heat, warm the olive oil until shimmering. Add the chopped onion, bell pepper, carrot, celery and ¼ teaspoon of the salt. Stir to combine and cook, stirring occasionally, until the vegetables are tender and the onion is translucent, about 7 to 10 minutes. + Add the garlic, chili powder, cumin, smoked paprika and oregano. Cook until fragrant while stirring constantly, about 1 minute. + Add the diced tomatoes and their juices, the drained black beans and pinto beans, vegetable broth and bay leaf. Stir to combine and let the mixture come to a simmer. Continue cooking, stirring occasionally and reducing heat as necessary to maintain a gentle simmer, for 30 minutes. + Remove the chili from the heat and discard the bay leaf. For the best texture and flavor, transfer 1 ½ cups of the chili to a blender, making sure to get some of the liquid portion. Securely fasten the lid and blend until smooth (watch out for hot steam), then pour the blended mixture back into the pot. (Or, you can blend the chili briefly with an immersion blender, or mash the chili with a potato masher until it reaches a thicker, more chili-like consistency.) + Add the chopped cilantro, stir to combine, and then mix in the vinegar, to taste. Add salt to taste, too—I added ¼ teaspoon more at this point. Divide the mixture into individual bowls and serve with garnishes of your choice. This chili will keep well in the refrigerator for about 4 days or you can freeze it for longer-term storage.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210102-2223.html b/src/kitaab-public/output/210102-2223.html new file mode 100644 index 0000000..902a8d3 --- /dev/null +++ b/src/kitaab-public/output/210102-2223.html @@ -0,0 +1,164 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + hardware list + 210102-2223 +

      %title Hardware Projects +:hardware:list: +%date 2021-01-02 22:23

      +
        +
      • pi hole #fd42bdb6
      • +
      • kobo hardware page turner
      • +
      • mycroft ai
      • +
      • pi0 project -> 201105-2043
      • +
      • LED alerter
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210103-2319.html b/src/kitaab-public/output/210103-2319.html new file mode 100644 index 0000000..3dd4620 --- /dev/null +++ b/src/kitaab-public/output/210103-2319.html @@ -0,0 +1,165 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + ops nix sealight + 210103-2319 +

      %title Matrix Bridges +:ops:nix:sealight: +%date 2021-01-03 23:19

      +

      running Matrix Bridges is generally a 3 step process:

      +
        +
      • create a bot
      • +
      • run the appservice so that it can be registered with the bot
      • +
      • tell synapse of the bot's existence
      • +
      +

      step 2 is where nixOS comes in, if there is a module configured for the service it's not necessary to go through the configuration steps and instead write something like services.matrix-appservice-discord.enable = true; in configuration.nix +I don't yet know what to do in nixOS specifically if there is no module (write one, lol)

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210109-2114.html b/src/kitaab-public/output/210109-2114.html new file mode 100644 index 0000000..cd56817 --- /dev/null +++ b/src/kitaab-public/output/210109-2114.html @@ -0,0 +1,160 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing + 210109-2114 +

      %title Sealight & Mossnet +:writing: +%date 2021-01-09 21:14

      +

      sealight.xyz the public facing beacon +Mossnet, the intimate underside

      +

      The two are entangled, and at the center is me. Though I hope this changes over time.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210115-1804.html b/src/kitaab-public/output/210115-1804.html new file mode 100644 index 0000000..cf33d09 --- /dev/null +++ b/src/kitaab-public/output/210115-1804.html @@ -0,0 +1,160 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + travel moving + 210115-1804 +

      %title missing things +:travel:moving: +%date 2021-01-15 18:04

      +

      throw blanket +big glass jar +burping lid x3

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210115-1809.html b/src/kitaab-public/output/210115-1809.html new file mode 100644 index 0000000..45dca24 --- /dev/null +++ b/src/kitaab-public/output/210115-1809.html @@ -0,0 +1,166 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + travel moving purchase + 210115-1809 +

      %title things to buy +:travel:moving:purchase: +%date 2021-01-15 18:09

      +

      v60 +gooseneck kettlee +coffee grinder +cleaver knife (make?) +cocktail maker +scissors +bathroom speakers +glass / wood table +side table

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210123-1414.html b/src/kitaab-public/output/210123-1414.html new file mode 100644 index 0000000..eae1e08 --- /dev/null +++ b/src/kitaab-public/output/210123-1414.html @@ -0,0 +1,160 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + hardware design + 210123-1414 +

      %title bed frame size +:hardware:design: +%date 2021-01-23 14:14

      +

      exact measurements: +190cmx130cm

      +

      buy wood slat 2~3cm less

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210123-1417.html b/src/kitaab-public/output/210123-1417.html new file mode 100644 index 0000000..80d094a --- /dev/null +++ b/src/kitaab-public/output/210123-1417.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + hardware design room + 210123-1417 +

      %title futon vacuum size +:hardware:design:room: +%date 2021-01-23 14:17

      +

      130x110cm

      +

      will fit the futon super smug

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210124-0033.html b/src/kitaab-public/output/210124-0033.html new file mode 100644 index 0000000..ac7dd29 --- /dev/null +++ b/src/kitaab-public/output/210124-0033.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev blog idea solution + 210124-0033 +

      %title The List +:dev:blog:idea:solution: +%date 2021-01-24 00:33

      +

      Cybre,Hacker,Digital,Inquisitive,Chaotic,Stubborn, +Gardener,Shaman,Artist,Sheperd,Sailor,Navigator,Climber

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210124-0135.html b/src/kitaab-public/output/210124-0135.html new file mode 100644 index 0000000..048bf95 --- /dev/null +++ b/src/kitaab-public/output/210124-0135.html @@ -0,0 +1,162 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + blog dstory dev kitaab + 210124-0135 +

      %title Getting Kitaab Online +:blog:dstory:dev:kitaab: +%date 2021-01-24 01:35

      +

      I'm writing publicify to turn Kitaab into anish.lakhwara.com +It needs to parse tags of files, which vimwiki generates at .vimwiki_tags +I need to parse this file through python-ctags3 (https://github.com/jonashaag/python-ctags3 )

      +

      Since VimZettel uses date to create file names, I'll need to grab the title as well

      +

      There seems to be a lot of garbage tags in there, so I'll need to clean up Kitaab too

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210124-0140.html b/src/kitaab-public/output/210124-0140.html new file mode 100644 index 0000000..b19ba57 --- /dev/null +++ b/src/kitaab-public/output/210124-0140.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + rock hardware nix + 210124-0140 +

      %title Updating Curve +:rock:hardware:nix: +%date 2021-01-24 01:40

      +

      Currently GNOME is too heavy for me to run much stuff concurrently on curve, I'll need to switch to a more lightweight window manager. I'm thinking bspwm + sxkhd like I used to run.

      +

      I'll probably need to write a lot of stuff to get it working right, and also dig out my old config. Seems doable

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210124-0144.html b/src/kitaab-public/output/210124-0144.html new file mode 100644 index 0000000..dc1882a --- /dev/null +++ b/src/kitaab-public/output/210124-0144.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + hardware rock box bowl + 210124-0144 +

      %title Turning Box into Bowl +:hardware:rock:box:bowl: +%date 2021-01-24 01:44

      +

      I desperately need to ditch bowl

      +

      I decided I don't need a new desktop PC and will just use box

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210124-0407.html b/src/kitaab-public/output/210124-0407.html new file mode 100644 index 0000000..00c1864 --- /dev/null +++ b/src/kitaab-public/output/210124-0407.html @@ -0,0 +1,159 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev idea kitaab + 210124-0407 +

      %title Shaarli <-> Kitaab bridge +:dev:idea:kitaab: +%date 2021-01-24 04:07

      +

      A small piece of software that allows me to bridge between shaarli's plain txt database, and links in Kitaab

      +

      Ideally this would look like accessing a copy of the db, gunziping(?) it and then being able to search that file, insert the link, and pass that information back to shaarli (which will probably require hitting the api)

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210222-0114.html b/src/kitaab-public/output/210222-0114.html new file mode 100644 index 0000000..02705fd --- /dev/null +++ b/src/kitaab-public/output/210222-0114.html @@ -0,0 +1,175 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + meta index puralek + 210222-0114 +

      %title Memex +:meta:index:puralek: +%date 2021-02-22 01:14

      +

      Yaad +Kitaab

      +

      = Generated Tags =

      +

      == meta ==

      + + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210314-1815.html b/src/kitaab-public/output/210314-1815.html new file mode 100644 index 0000000..9955119 --- /dev/null +++ b/src/kitaab-public/output/210314-1815.html @@ -0,0 +1,174 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing blog + 210314-1815 +

      %title Re-Thinking and Evaluating My Personal Computing +:writing:blog: +%date 2021-03-14 18:15

      +

      I own several computers. I wear one on my wrist and carry one in my pocket everyday. I have single use devices for reading and drawing. A couple just for video games, and one specifically for work. This is not an accident. Each of these devices were picked out by me, for aesthetic and functional qualities. My watch is a Pebble Time Round, built by a company that no longer operates, with severs powered by a bunch of die-hard hackers who have gone to incredible effort to care for a device we love; I bought mine second hand and have replaced the battery (and soon the glass too) on mine. My phone has a keyboard (FX Tec Pro 1). My PSP is hacked.

      +

      Which is to say I think a lot about what I want my computers to do, and how to go about that. It's been more than 2 years since I bought my brand new Purism Librem 13v3, and it's already beginning to fail, so I've been thinking about what I want to do when the time comes to replace it. I looked into repairing it, but it might cost more than a new computer, and so I wonder about what's better. I believe the primary environmental costs come from mining. Trashing fairly functional hardware for new silicon perhaps isn't without it's problmes, but if I start fresh and right, perhaps I can build a computer that will last longer than I will. Inspired by The Heirloom Computer, 50 Year Computing and the various projects referenced in these documents, I began reflecting on what I want out of my personal computing.

      +

      = Requirements =

      +
        +
      • USB-C and A ports
      • +
      • HDMI
      • +
      • Networking stack (with kill switch)
      • +
      • Small size
      • +
      • Battery powered
      • +
      +

      = Options =

      +
        +
      • Computer in a Stick
      • +
      • NUCs
      • +
      • SBCs
      • +
      • eMMC boards?
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210407-1501.html b/src/kitaab-public/output/210407-1501.html new file mode 100644 index 0000000..0d03188 --- /dev/null +++ b/src/kitaab-public/output/210407-1501.html @@ -0,0 +1,161 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing story + 210407-1501 +

      %title dreaming of futures +:writing:story: +%date 2021-04-07 15:01

      +

      i cant sleep once more so i decided to write things

      +

      i dream of volumetric displays becoming labs to represent live data. theyre interfaced with through steno-gloves, with modal based editing to allow various control over views of the data. the truly productivity obsessed wear 2 gloves, or get single monocles through which they constantly sip at information. in this world it is not raw speed which is evolutionarily optimal, but flexibility. robot hive minds generally do not take kinldy to biological life forms. signalling reinforcments, activating camoflague or remotely interfering are necesary skills to staying safe

      +

      and yet in the same world, self aseembly and disassembly of modular, independent shelter makes nomadic lifestyles sustainable. tap into mycelium networks to gain resources and share information, if you can find the way in. travel deep in-land towards the people sustaining these networks, or congrgate on sailing ships covered in mesh. low-powered thin clients, with eink displays may be the only direct descendent of the laptop, but primary computing is through discrete tokens for those with the keys to access them. distributed spindles for observability into space. storage clusters shaped into minerals that will hold form for 100s of years, supporting their own networks and contributing positively to the ecosystem. analog computers powered by simplyconfigutation of sunlight.

      +

      where once we trapped electricity in silicon and forced it to think, now we shaped light into rocks and sprouted mushrooms as we went.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210416-2252.html b/src/kitaab-public/output/210416-2252.html new file mode 100644 index 0000000..bdd543f --- /dev/null +++ b/src/kitaab-public/output/210416-2252.html @@ -0,0 +1,161 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + nix dev python devops contribution auggar + 210416-2252 +

      %title mach-nix and reproducible Python builds +:nix:dev:python:devops:contribution:auggar: +%date 2021-04-16 22:52

      +

      Tried to get Auggar "portable" through the use of mach-nix and the nix package manager. I couldn't quite do it, because the latest version of asyncio on whichever version of python nixpkgs mach-nix defaults to.

      +

      Hopefully by specifing specific versions of each of the plugins and the python version it will work.

      +

      = mach-nix expressions = +mach-nix env shell.nix -r requirements.txt

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210417-0308.html b/src/kitaab-public/output/210417-0308.html new file mode 100644 index 0000000..a41ce26 --- /dev/null +++ b/src/kitaab-public/output/210417-0308.html @@ -0,0 +1,168 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + nix docker devops + 210417-0308 +

      %title Nix Docker +:nix:docker:devops: +%date 2021-04-17 03:08

      +

      I can just use docker regularly on NixOS. That's pretty cool. +I can use Nix to build docker images instead of a Dockerfile but that seems excessive.

      +
      { pkgs ? import <nixpkgs> { system = "x86_64-linux"; } }:
      +
      +pkgs.dockerTools.buildImage {
      +  name = "hello-docker";
      +  config = {
      +    Cmd = [ "${pkgs.hello}/bin/hello" ];
      +  };
      +}
      +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210417-0322.html b/src/kitaab-public/output/210417-0322.html new file mode 100644 index 0000000..b85ddd9 --- /dev/null +++ b/src/kitaab-public/output/210417-0322.html @@ -0,0 +1,160 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + puralek + 210417-0322 +

      %title Data to grab +:puralek: +%date 2021-04-17 03:22

      +

      Old photos I took as a kid +Emails from telos.ideate@gmail.com +Text messages from blackberry

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210417-1455.html b/src/kitaab-public/output/210417-1455.html new file mode 100644 index 0000000..5c5a33a --- /dev/null +++ b/src/kitaab-public/output/210417-1455.html @@ -0,0 +1,165 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + devops docker aardwolf contribution + 210417-1455 +

      %title Aardwolf Docker creation +:devops:docker:aardwolf:contribution: +%date 2021-04-17 14:55

      +

      = Docker structure = +Dockerfile creates an alpine installation and pins the right version of the rust toolchain +docker-entrypoint.sh accept sthe environment variable AARDWOLF_SETUP_DB which if true will run cargo run --bin setup +otherwise it will just start the container +Docker-compose.yml will configure a psql container, and an aardwolf instance to ease over development issues.

      +

      I need to learn how to set the environment variable for configuring the psql server only once.

      +

      = Helpful links = +https://github.com/Aardwolf-Social/aardwolf/blob/master/INSTALL.md

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210417-1502.html b/src/kitaab-public/output/210417-1502.html new file mode 100644 index 0000000..00ce003 --- /dev/null +++ b/src/kitaab-public/output/210417-1502.html @@ -0,0 +1,165 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + aardwolf devops + 210417-1502 +

      %title Intial thoughts +:aardwolf:devops: +%date 2021-04-17 15:02

      +

      Below are my initial thoughts from poking my head around the aardwolf reposity += ARCHIVE =

      +

      As far as I understand the design of the project it looks like this:

      +

      ~+ DATABASE MAGIC +~ +ructe -> Create templates +Templates -> Actix to make it interactive

      +

      Currently we're at ructe setup. I'm expecting HTML output served through the NGINX configuration. +I need to write a create database script, create table, somewhere to store the psql database and somewhere to output the static files.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210419-2204.html b/src/kitaab-public/output/210419-2204.html new file mode 100644 index 0000000..14b67d4 --- /dev/null +++ b/src/kitaab-public/output/210419-2204.html @@ -0,0 +1,161 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + devops docker aardwolf + 210419-2204 +

      %title Aardwolf docker hell +:devops:docker:aardwolf: +%date 2021-04-19 22:04

      +

      Trying to get rust to work in a docker container is driving me crazy. +Using the default rust container doesn't give me the nightly version which breaks aardwolf? +Creating an alpine container with rust toolchain works, but once I get to docker-entrypoint, it isn't able to create a temporary file which is necessary for installation to continue. I tried install rust at /usr/local/{rust,cargo}, and /opt/{rust,cargo} and now /app/{rust,cargo} which I hope won't fuck shit up. +Trying to grant permissions (chmod) on the /usr/local and /opt directories takes forever with docker, but still led to the same error. I didn't try chown

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210423-1907.html b/src/kitaab-public/output/210423-1907.html new file mode 100644 index 0000000..ccfe1d6 --- /dev/null +++ b/src/kitaab-public/output/210423-1907.html @@ -0,0 +1,172 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + meta memex dev puralek + 210423-1907 +

      %title kitaab features +:meta:memex:dev:puralek: +%date 2021-04-23 19:07

      +

      some things i want for kitaaB

      +
        +
      • sort by last updated
      • +
      • automatically update specific (should i tag these?)
      • +
      • have /now be automatically set with the above two
      • +
      • integrate with taskwarrior even more? how?
      • +
      • ???
      • +
      +

      what needs to be done:

      +
        +
      • read VimZettel
      • +
      • understand vimscript
      • +
      • write the necessary functions in Lua?
      • +
      +

      210424-1332

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210424-1332.html b/src/kitaab-public/output/210424-1332.html new file mode 100644 index 0000000..0d51b2c --- /dev/null +++ b/src/kitaab-public/output/210424-1332.html @@ -0,0 +1,160 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + vim dev + 210424-1332 +

      %title Learning Vimscript +:vim:dev: +%date 2021-04-24 13:32

      +

      Need to learn vimscript to read VimZettel 210423-1907 +I bought practical Vim to help me through the intricacies of this text editor

      +

      It seems like each function is defined in ...

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210425-1724.html b/src/kitaab-public/output/210425-1724.html new file mode 100644 index 0000000..9e43e0a --- /dev/null +++ b/src/kitaab-public/output/210425-1724.html @@ -0,0 +1,162 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev docker aardwolf contribution + 210425-1724 +

      %title Aardwolf progress report +:dev:docker:aardwolf:contribution: +%date 2021-04-25 17:24

      +

      pushed to git +confirmed psql available +cargo run --bin setup doesn't compile +no error

      +

      docker-entrypoint.sh on empty loop to access docker container

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210521-1751.html b/src/kitaab-public/output/210521-1751.html new file mode 100644 index 0000000..b8d8afc --- /dev/null +++ b/src/kitaab-public/output/210521-1751.html @@ -0,0 +1,162 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + pirate irc books + 210521-1751 +

      %title Pirating ebooks on irc +:pirate:irc:books: +%date 2021-05-21 17:51

      +

      Join irc.irchighway.net +Connect to #ebooks +@Search <book or author +Extract the archive file +!<username> <filename> is generally the format contained within the file

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210607-0157.html b/src/kitaab-public/output/210607-0157.html new file mode 100644 index 0000000..008055e --- /dev/null +++ b/src/kitaab-public/output/210607-0157.html @@ -0,0 +1,163 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + linux ops encrypt lvm + 210607-0157 +

      %title Mounting Encrypted Drives +:linux:ops:encrypt:lvm: +%date 2021-06-07 01:57

      +

      mounting encrypted lvm drives:

      +
        +
      • cryptsetup luksOpen /dev/sdX vgroot
      • +
      • vgchange -a y
      • +
      • mount /dev/vg/root /mnt
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210612-1752.html b/src/kitaab-public/output/210612-1752.html new file mode 100644 index 0000000..c9e9791 --- /dev/null +++ b/src/kitaab-public/output/210612-1752.html @@ -0,0 +1,167 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + hobbies + 210612-1752 +

      %title Terrarium Making +:hobbies: +%date 2021-06-12 17:52

      +

      In order to build a terrarium you need:

      +
        +
      • A glass jar
      • +
      • Some rocks
      • +
      • Activated Charcoal
      • +
      • Cotton
      • +
      • Netting
      • +
      • Soil
      • +
      • Plants
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/210624-1517.html b/src/kitaab-public/output/210624-1517.html new file mode 100644 index 0000000..913a771 --- /dev/null +++ b/src/kitaab-public/output/210624-1517.html @@ -0,0 +1,176 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + cycle + 210624-1517 +

      %title Down the rabbit hole +:cycle: +%date 2021-06-24 15:17

      +

      I went down the fixie rabbit hole. Here's some knowledge I came back with

      +

      = frames =

      +
        +
      • different materials have different benefits and draw backs, i chose chromoloy steel because it's durable and still fairly light
      • +
      • look at the welds to see the quality

        +

        = wheels =

        +
      • +
      • wheel strength is determined by number of spokes
      • +
      • less spokes = faster, more spokes = durable
      • +
      • 32 spokes (32T?) is the standard

        +

        = quality =

        +
      • +
      • the finish, feel and attention to detail are all sigs of a good bike
      • +
      • good bike vendors provide specific parts lists and geometry charts

        +

        = geometry =

        +
      • +
      • aggressive angles
      • +
      • idk really know much about this
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/AlgoVPN.html b/src/kitaab-public/output/AlgoVPN.html new file mode 100644 index 0000000..2450695 --- /dev/null +++ b/src/kitaab-public/output/AlgoVPN.html @@ -0,0 +1,157 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + service ops + 12 Sep, 21 +

      :service:ops:

      +

      bowl still on Ubuntu LTS 16.04, really should upgrade. +Can't install VPN throgh Algo

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/Backups.html b/src/kitaab-public/output/Backups.html new file mode 100644 index 0000000..cd79352 --- /dev/null +++ b/src/kitaab-public/output/Backups.html @@ -0,0 +1,175 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + puralek backup + 12 Sep, 21 +

      %title Backups +:puralek:backup:

      +

      200930-2316

      +

      Offsite: Blackblaze +Cold storage: 201013-2143 +Software: Borg

      +

      = Software Checklist =

      +
        +
      • [x] Nextcloud #74c15544
      • +
      • [x] TaskWarrior #b0c4980a
      • +
      • [x] Wallabag #72818668
      • +
      • [x] Shaarli #1a90133a
      • +
      • [x] beancount + fava (finances) #0432e317
      • +
      • [x] music #99673324
      • +
      • [x] music-remote #15de5305
      • +
      +

      = Guides =

      + + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/Kitaab.html b/src/kitaab-public/output/Kitaab.html new file mode 100644 index 0000000..1d572c6 --- /dev/null +++ b/src/kitaab-public/output/Kitaab.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + blog maze writing + 12 Sep, 21 +

      :blog:maze:writing:

      +

      you've been before. you recall this space, vaguely. the memory lingers on the outskirts of certainty. when were you here? what is it about this place? the way the papers are laid out just so? the casual angle of the chair. devu-ju usually isn't this powerful.

      +

      a scrawl of indecipherable runes, ever shifting. are you dreaming? is that why you remember? is that why you forgot?

      +

      Something shifts in your pattern recognition and you can see

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/Punya.html b/src/kitaab-public/output/Punya.html new file mode 100644 index 0000000..b43d818 --- /dev/null +++ b/src/kitaab-public/output/Punya.html @@ -0,0 +1,190 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + nix ops + 12 Sep, 21 +

      %title Punya +:nix:ops:

      +

      = Status = +renewed ->

      +

      nixOS rebirth. +The ability to conjure my machines from thin air

      +

      tools

      +

      gnome -> bspwm + sxhkd + lightDM +tidalVM or PopOS_Shell +alacritty/tilix +patchbay +firefox (these sync once logged into firefox)

      +
        +
      • wallbag
      • +
      • shaarlier
      • +
      • simple tab groups
      • +
      • uMatrix
      • +
      • vimperator
      • +
      • dark reader
      • +
      • css +fish / zsh (powerlevel10k) +newsflash +geary -> thunderbird / neomutt +telegram, fractal -> element +mastodon +neovim
      • +
      • plugins/vimrc +homemanager? +syncthing +ripcord +processing +vcv-rack +tidalcycles +signal +task warrior
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/aardwolf.html b/src/kitaab-public/output/aardwolf.html new file mode 100644 index 0000000..0eb897f --- /dev/null +++ b/src/kitaab-public/output/aardwolf.html @@ -0,0 +1,164 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + devops rust contribution docker https https + 12 Sep, 21 +

      :devops:rust:contribution:docker: +A federated social network built in Rust

      +

      = Links = +project home: https://github.com/Aardwolf-Social +install: https://github.com/Aardwolf-Social/aardwolf/blob/master/INSTALL.md

      +

      == aardwolf ==

      + + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/assets/android-icon-144x144.png b/src/kitaab-public/output/assets/android-icon-144x144.png new file mode 100644 index 0000000..d6f1a82 Binary files /dev/null and b/src/kitaab-public/output/assets/android-icon-144x144.png differ diff --git a/src/kitaab-public/output/assets/android-icon-192x192.png b/src/kitaab-public/output/assets/android-icon-192x192.png new file mode 100644 index 0000000..10230ea Binary files /dev/null and b/src/kitaab-public/output/assets/android-icon-192x192.png differ diff --git a/src/kitaab-public/output/assets/android-icon-36x36.png b/src/kitaab-public/output/assets/android-icon-36x36.png new file mode 100644 index 0000000..a969a10 Binary files /dev/null and b/src/kitaab-public/output/assets/android-icon-36x36.png differ diff --git a/src/kitaab-public/output/assets/android-icon-48x48.png b/src/kitaab-public/output/assets/android-icon-48x48.png new file mode 100644 index 0000000..02d652d Binary files /dev/null and b/src/kitaab-public/output/assets/android-icon-48x48.png differ diff --git a/src/kitaab-public/output/assets/android-icon-72x72.png b/src/kitaab-public/output/assets/android-icon-72x72.png new file mode 100644 index 0000000..9fad473 Binary files /dev/null and b/src/kitaab-public/output/assets/android-icon-72x72.png differ diff --git a/src/kitaab-public/output/assets/android-icon-96x96.png b/src/kitaab-public/output/assets/android-icon-96x96.png new file mode 100644 index 0000000..4523876 Binary files /dev/null and b/src/kitaab-public/output/assets/android-icon-96x96.png differ diff --git a/src/kitaab-public/output/assets/apple-icon-114x114.png b/src/kitaab-public/output/assets/apple-icon-114x114.png new file mode 100644 index 0000000..89d54f3 Binary files /dev/null and b/src/kitaab-public/output/assets/apple-icon-114x114.png differ diff --git a/src/kitaab-public/output/assets/apple-icon-120x120.png b/src/kitaab-public/output/assets/apple-icon-120x120.png new file mode 100644 index 0000000..c8c5460 Binary files /dev/null and b/src/kitaab-public/output/assets/apple-icon-120x120.png differ diff --git a/src/kitaab-public/output/assets/apple-icon-144x144.png b/src/kitaab-public/output/assets/apple-icon-144x144.png new file mode 100644 index 0000000..d6f1a82 Binary files /dev/null and b/src/kitaab-public/output/assets/apple-icon-144x144.png differ diff --git a/src/kitaab-public/output/assets/apple-icon-152x152.png b/src/kitaab-public/output/assets/apple-icon-152x152.png new file mode 100644 index 0000000..7a41592 Binary files /dev/null and b/src/kitaab-public/output/assets/apple-icon-152x152.png differ diff --git a/src/kitaab-public/output/assets/apple-icon-180x180.png b/src/kitaab-public/output/assets/apple-icon-180x180.png new file mode 100644 index 0000000..f36e8e0 Binary files /dev/null and b/src/kitaab-public/output/assets/apple-icon-180x180.png differ diff --git a/src/kitaab-public/output/assets/apple-icon-57x57.png b/src/kitaab-public/output/assets/apple-icon-57x57.png new file mode 100644 index 0000000..73de85b Binary files /dev/null and b/src/kitaab-public/output/assets/apple-icon-57x57.png differ diff --git a/src/kitaab-public/output/assets/apple-icon-60x60.png b/src/kitaab-public/output/assets/apple-icon-60x60.png new file mode 100644 index 0000000..c7330af Binary files /dev/null and b/src/kitaab-public/output/assets/apple-icon-60x60.png differ diff --git a/src/kitaab-public/output/assets/apple-icon-72x72.png b/src/kitaab-public/output/assets/apple-icon-72x72.png new file mode 100644 index 0000000..9fad473 Binary files /dev/null and b/src/kitaab-public/output/assets/apple-icon-72x72.png differ diff --git a/src/kitaab-public/output/assets/apple-icon-76x76.png b/src/kitaab-public/output/assets/apple-icon-76x76.png new file mode 100644 index 0000000..cb7d29c Binary files /dev/null and b/src/kitaab-public/output/assets/apple-icon-76x76.png differ diff --git a/src/kitaab-public/output/assets/apple-icon-precomposed.png b/src/kitaab-public/output/assets/apple-icon-precomposed.png new file mode 100644 index 0000000..e08c6c5 Binary files /dev/null and b/src/kitaab-public/output/assets/apple-icon-precomposed.png differ diff --git a/src/kitaab-public/output/assets/apple-icon.png b/src/kitaab-public/output/assets/apple-icon.png new file mode 100644 index 0000000..e08c6c5 Binary files /dev/null and b/src/kitaab-public/output/assets/apple-icon.png differ diff --git a/src/kitaab-public/output/assets/favicon-16x16.png b/src/kitaab-public/output/assets/favicon-16x16.png new file mode 100644 index 0000000..8b65f33 Binary files /dev/null and b/src/kitaab-public/output/assets/favicon-16x16.png differ diff --git a/src/kitaab-public/output/assets/favicon-32x32.png b/src/kitaab-public/output/assets/favicon-32x32.png new file mode 100644 index 0000000..0a38bad Binary files /dev/null and b/src/kitaab-public/output/assets/favicon-32x32.png differ diff --git a/src/kitaab-public/output/assets/favicon-96x96.png b/src/kitaab-public/output/assets/favicon-96x96.png new file mode 100644 index 0000000..4523876 Binary files /dev/null and b/src/kitaab-public/output/assets/favicon-96x96.png differ diff --git a/src/kitaab-public/output/assets/favicon.ico b/src/kitaab-public/output/assets/favicon.ico new file mode 100644 index 0000000..2846df3 Binary files /dev/null and b/src/kitaab-public/output/assets/favicon.ico differ diff --git a/src/kitaab-public/output/assets/main.css b/src/kitaab-public/output/assets/main.css new file mode 100644 index 0000000..21d7112 --- /dev/null +++ b/src/kitaab-public/output/assets/main.css @@ -0,0 +1,294 @@ +/* RESET CSS BY ANDY BELL */ + +/* Box sizing rules */ +*, +*::before, +*::after { + box-sizing: border-box; +} + +/* Remove default margin */ +body, +h1, +h2, +h3, +h4, +p, +figure, +blockquote, +dl, +dd { + margin: 0; +} + +/* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */ +ul[role='list'], +ol[role='list'] { + list-style: none; +} + +/* Set core root defaults */ +html:focus-within { + scroll-behavior: smooth; +} + +/* Set core body defaults */ +body { + min-height: 100vh; + text-rendering: optimizeSpeed; + line-height: 1.5; +} + +/* A elements that don't have a class get default styles */ +a:not([class]) { + text-decoration-skip-ink: auto; +} + +/* Make images easier to work with */ +img, +picture { + max-width: 100%; + display: block; +} + +/* Inherit fonts for inputs and buttons */ +input, +button, +textarea, +select { + font: inherit; +} + + +/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */ +@media (prefers-reduced-motion: reduce) { + html:focus-within { + scroll-behavior: auto; + } + + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } +} + + +/* CHISAI CSS BY THOMASORUS */ + +:root { + --text: black; + --background: white; + --dots: radial-gradient(currentColor 1px, transparent 1px), radial-gradient(currentColor 1px, transparent 1px); + --ratio: 1.5; + --s-5: calc(var(--s-4) / var(--ratio)); + --s-4: calc(var(--s-3) / var(--ratio)); + --s-3: calc(var(--s-2) / var(--ratio)); + --s-2: calc(var(--s-1) / var(--ratio)); + --s-1: calc(var(--s0) / var(--ratio)); + --s0: 1rem; + --s1: calc(var(--s0) * var(--ratio)); + --s2: calc(var(--s1) * var(--ratio)); + --s3: calc(var(--s2) * var(--ratio)); + --s4: calc(var(--s3) * var(--ratio)); + --s5: calc(var(--s4) * var(--ratio)); + font-size: calc(1rem + 0.5vw); +} + +@media (prefers-color-scheme: dark) { + :root { + --text: white; + --background: black; + --dots: radial-gradient(white 1px, transparent 1px), radial-gradient(white 1px, transparent 1px); + } +} + +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + background-color: var(--background); + color: var(--text); +} + +header { + width: 100%; + text-align: center; + font-size: var(--s1); + padding-top: var(--s3); +} + +header nav { + display: flex; + justify-content: space-around; + +} + +header a { + color: var(--text); + text-transform: uppercase; + font-weight: 700; +} + +a { + color: var(--text); + text-decoration: none; +} + +nav em { + font-size: var(--s0); +} + +h1 { + font-size: var(--s2); + color: var(--text); + line-height: 1; +} + +h2 { + font-size: var(--s1); + color: var(--text); +} + +h3 { + font-size: var(--s0); + color: var(--text); +} + +main { + padding: var(--s0); + padding: var(--s-1); + background-image: var(--dots); + background-size: calc(4 * 1px) calc(4 * 1px); + background-position: 0 0, calc(2 * 1px) calc(2 * 1px); +} + +article { + background-color: var(--background); + padding: var(--s0); +} + +main a { + color: var(--text); + border-bottom: 2px solid var(--text); +} + +main date { + display: block; +} + +li { + line-height: 1.3; +} + +ul>*+* { + margin-top: var(--s0); +} + +.container { + --space: var(--s1); + display: flex; + flex-direction: column; + justify-content: flex-start; + max-width: 60ch; + margin-left: auto; + margin-right: auto; + padding: 0 var(--s0); +} + +.flow>*+* { + margin-top: var(--s0); +} + +.flow-small>*+* { + margin-top: var(--s-3); +} + + +.flow-large>*+* { + margin-top: var(--s3); +} + +.logo { + border-radius: 100%; + margin: 0 auto; + max-width: 180px; + padding: 15px; +} + +.youtube { + position: relative; + padding-bottom: 56.25%; + height: 0; + overflow: hidden; +} + +.youtube>iframe { + position: absolute; + width: 100%; + height: 100%; + left: 0; + right: 0; +} + +.listing { + padding: 0; + list-style: none; + line-height: 1; +} + +.listing h3 { + font-weight: 300; +} + +.listing small { + display: block; + font-size: var(--s-1); +} + +.listing>*+* { + margin-top: var(--s-2); +} + + +@media (max-width: 520px) { + + :root { + --s1: var(--s0); + } + + .logo { + max-width: 120px; + padding: 5px; + } +} + +/* +@media (prefers-color-scheme: dark) { + :root { + --purple-light: rgb(172, 16, 239); + --purple-light-transparent: rgba(172, 16, 239, 0.7); + --purple-medium: #5927e0; + --purple-strong: #3f1ca0; + --background: #111; + --text: hsl(221, 19%, 66%); + --title: white; + --article-shadow: black; + --link: var(--purple-medium); + } +} + +@media (prefers-color-scheme: light) { + :root { + --purple-light: rgb(172, 16, 239); + --purple-light-transparent: rgba(172, 16, 239, 0.7); + --purple-medium: #5927e0; + --purple-strong: #3f1ca0; + --background: white; + --text: #6b7280; + --title: black; + --article-shadow: #333; + --link: var(--purple-light-transparent); + } +} */ \ No newline at end of file diff --git a/src/kitaab-public/output/assets/ms-icon-144x144.png b/src/kitaab-public/output/assets/ms-icon-144x144.png new file mode 100644 index 0000000..d6f1a82 Binary files /dev/null and b/src/kitaab-public/output/assets/ms-icon-144x144.png differ diff --git a/src/kitaab-public/output/assets/ms-icon-150x150.png b/src/kitaab-public/output/assets/ms-icon-150x150.png new file mode 100644 index 0000000..1d14f1a Binary files /dev/null and b/src/kitaab-public/output/assets/ms-icon-150x150.png differ diff --git a/src/kitaab-public/output/assets/ms-icon-310x310.png b/src/kitaab-public/output/assets/ms-icon-310x310.png new file mode 100644 index 0000000..7ebf4b5 Binary files /dev/null and b/src/kitaab-public/output/assets/ms-icon-310x310.png differ diff --git a/src/kitaab-public/output/assets/ms-icon-70x70.png b/src/kitaab-public/output/assets/ms-icon-70x70.png new file mode 100644 index 0000000..35d1650 Binary files /dev/null and b/src/kitaab-public/output/assets/ms-icon-70x70.png differ diff --git a/src/kitaab-public/output/assets/rss.png b/src/kitaab-public/output/assets/rss.png new file mode 100644 index 0000000..ce1d6ff Binary files /dev/null and b/src/kitaab-public/output/assets/rss.png differ diff --git a/src/kitaab-public/output/assets/social.png b/src/kitaab-public/output/assets/social.png new file mode 100644 index 0000000..ce1d6ff Binary files /dev/null and b/src/kitaab-public/output/assets/social.png differ diff --git a/src/kitaab-public/output/auggar.html b/src/kitaab-public/output/auggar.html new file mode 100644 index 0000000..417faf6 --- /dev/null +++ b/src/kitaab-public/output/auggar.html @@ -0,0 +1,160 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev nix python devops docker contribution https + 12 Sep, 21 +

      :dev:nix:python:devops:docker:contribution: +A merveilles webring aggregator started by Preston

      +

      github: https://github.com/LiminalCrab/auggar/

      +

      I'm helping Preston with the Jinja templating as well as making the deploy portable probably using Docker

      +

      The trouble is I can't get it to build. I started with nix using it as an excuse to try mach-nix and generally make environments portable using nix. Didn't work for reasons covered 210416-2252

      +

      Next to try Docker

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/brooyar2021.html b/src/kitaab-public/output/brooyar2021.html new file mode 100644 index 0000000..74590e9 --- /dev/null +++ b/src/kitaab-public/output/brooyar2021.html @@ -0,0 +1,220 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + camp + 06 Dec, 21 +

      :camp:

      +

      = pack =

      +
        +
      • toilet paper
      • +
      • utensils
      • +
      • pan?
      • +
      • stove?
      • +
      • plate / bowl
      • +
      • tooth brush

        +
      • +
      • kobo

        +
      • +
      • vape + batteries + juice
      • +
      • deck of cards
      • +
      • beer
      • +
      • speaker
      • +
      • ▟▛▞▝▕▖▗▔▕▖▗▔
      • +
      • battery bank
      • +
      • psp / switch?

        +
      • +
      • harness

        +
      • +
      • climbing shoes
      • +
      • slippers?
      • +
      • grigri
      • +
      • chalk bag

        +
      • +
      • snacks

        +
          +
        • clif bars / other bars
        • +
        • carrots
        • +
        • peanut butter
        • +
        • chips
        • +
        • candy
        • +
        • cookies / muffins?
        • +
        +
      • +
      • aeropress
      • +
      • ground coffee beans
      • +
      • food
      • +
      • water (10L minimum)

        +
      • +
      • 2 pairs climbing clothes

        +
      • +
      • 1 pair chilling clothes
      • +
      • 4 pair socks
      • +
      • underwear
      • +
      • big jacket
      • +
      • sweater

        +
      • +
      • tent

        +
      • +
      • sleeping bag
      • +
      • sleeping pad purchases
      • +
      • sleeping mask
      • +
      • chair
      • +
      • washbucket
      • +
      • table?

        +
      • +
      • firewood

        +
      • +
      • kindling
      • +
      • fire starter
      • +
      • matches
      • +
      • lighter
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/cooking.html b/src/kitaab-public/output/cooking.html new file mode 100644 index 0000000..de5e845 --- /dev/null +++ b/src/kitaab-public/output/cooking.html @@ -0,0 +1,175 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + cook + 06 Dec, 21 +

      %title Cooking Index +:cook: +%date 16-05-21 12:51

      +

      = Recipes =

      +
        +
      • Bibimbap
      • +
      • Gado Gado
      • +
      • Scram Scram
      • +
      • Rice Noodle Salad
      • +
      • Sushi
      • +
      • Falafel
      • +
      • Banana Bread
      • +
      • Pizza dough
      • +
      +

      = Easy =

      +
        +
      • Hacked Ramen
      • +
      • Risotto
      • +
      • Gnocci
      • +
      • Pasta
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/curve.html b/src/kitaab-public/output/curve.html new file mode 100644 index 0000000..bf2f88e --- /dev/null +++ b/src/kitaab-public/output/curve.html @@ -0,0 +1,175 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + rock hardware + 13 Oct, 21 +

      is: Librem 13 v3 +:rock:hardware: +boot encrypted: yes

      +

      = Tasks =

      +
        +
      • fix kitaab
      • +
      • install nix
      • +
      • change to bspwm
          +
        • get bspwm config from old file
        • +
        +
      • +
      +

      = Software =

      +
        +
      • GPXViewer - delete? (cairo not found)
      • +
      +

      = Data =

      +
        +
      • ssh keys
      • +
      • gpg subkeys
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/datalife.html b/src/kitaab-public/output/datalife.html new file mode 100644 index 0000000..d073370 --- /dev/null +++ b/src/kitaab-public/output/datalife.html @@ -0,0 +1,167 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + puralek + 12 Sep, 21 +

      :puralek:

      +

      This basically became Puralek + = my life in data =

      +
        +
      • shaarli connection
      • +
      • webpage data sharing

        +

        what metrics to use for what data?

        +

        completed/month +total +task tags

        +

        incongruencies

        +
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/feed.xml b/src/kitaab-public/output/feed.xml new file mode 100644 index 0000000..5ce9e6f --- /dev/null +++ b/src/kitaab-public/output/feed.xml @@ -0,0 +1,3654 @@ + + + +Kitaab | +~/usr/basant/src/builder/kitaab-builder/build +Kitaab — +2021-12-06 + + ~/usr/basant/src/builder/kitaab-builder/buildassets/rss.png + Kitaab — +~/usr/basant/src/builder/kitaab-builder/build + + + How to grow Mushrooms + ~/usr/basant/src/builder/kitaab-builder/buildmushrooms.html + ~/usr/basant/src/builder/kitaab-builder/buildmushrooms.html + 2021-12-06 19:42:33.640111 + +%title How to grow Mushrooms +:cook:grow:solarpunk: +%date 11-05-21 20:23

      +

      = 7 Basic Steps =

      +
        +
      • Grow a mushroom culture
          +
        • Needs a high nutrient petridish
        • +
        • Needs a clean environment so that mushrooms aren't competing with bacteria
        • +
        +
      • +
      • Take the mycelium and put it on sterilized grains
      • +
      • Expand the grain to create a mushroom spawn
      • +
      • Add the spawn to some substrate (coffee grounds!)
      • +
      • Wait for the mycelium to engulf the substrate
      • +
      • Change the environmental conditions
          +
        • Generally dropping the temperature and increasing humidity
        • +
        +
      • +
      • Harvest the mushroom fruit!!
      • +
      +]]> +
      +
      + Cooking Index + ~/usr/basant/src/builder/kitaab-builder/buildcooking.html + ~/usr/basant/src/builder/kitaab-builder/buildcooking.html + 2021-12-06 19:42:33.633088 + +%title Cooking Index +:cook: +%date 16-05-21 12:51

      +

      = Recipes =

      +
        +
      • Bibimbap
      • +
      • Gado Gado
      • +
      • Scram Scram
      • +
      • Rice Noodle Salad
      • +
      • Sushi
      • +
      • Falafel
      • +
      • Banana Bread
      • +
      • Pizza dough
      • +
      +

      = Easy =

      +
        +
      • Hacked Ramen
      • +
      • Risotto
      • +
      • Gnocci
      • +
      • Pasta
      • +
      +]]> +
      +
      + brooyar2021 + ~/usr/basant/src/builder/kitaab-builder/buildbrooyar2021.html + ~/usr/basant/src/builder/kitaab-builder/buildbrooyar2021.html + 2021-12-06 19:42:33.631788 + +:camp:

      +

      = pack =

      +
        +
      • toilet paper
      • +
      • utensils
      • +
      • pan?
      • +
      • stove?
      • +
      • plate / bowl
      • +
      • tooth brush

        +
      • +
      • kobo

        +
      • +
      • vape + batteries + juice
      • +
      • deck of cards
      • +
      • beer
      • +
      • speaker
      • +
      • ▟▛▞▝▕▖▗▔▕▖▗▔
      • +
      • battery bank
      • +
      • psp / switch?

        +
      • +
      • harness

        +
      • +
      • climbing shoes
      • +
      • slippers?
      • +
      • grigri
      • +
      • chalk bag

        +
      • +
      • snacks

        +
          +
        • clif bars / other bars
        • +
        • carrots
        • +
        • peanut butter
        • +
        • chips
        • +
        • candy
        • +
        • cookies / muffins?
        • +
        +
      • +
      • aeropress
      • +
      • ground coffee beans
      • +
      • food
      • +
      • water (10L minimum)

        +
      • +
      • 2 pairs climbing clothes

        +
      • +
      • 1 pair chilling clothes
      • +
      • 4 pair socks
      • +
      • underwear
      • +
      • big jacket
      • +
      • sweater

        +
      • +
      • tent

        +
      • +
      • sleeping bag
      • +
      • sleeping pad purchases
      • +
      • sleeping mask
      • +
      • chair
      • +
      • washbucket
      • +
      • table?

        +
      • +
      • firewood

        +
      • +
      • kindling
      • +
      • fire starter
      • +
      • matches
      • +
      • lighter
      • +
      +]]> +
      +
      + = [[Kitaab]] = + ~/usr/basant/src/builder/kitaab-builder/buildvimwiki.html + ~/usr/basant/src/builder/kitaab-builder/buildvimwiki.html + 2021-11-29 23:05:23.385868 + += Kitaab = +A lab notebook for a digital garden and a physical life +now +pipeline

      +

      = Plant Gardening = +A small garden of ideas

      + +

      = The Lab = +Notes of alchemy

      + +

      = The Way = +Spiritual power reserves

      + +

      = Food =

      + +

      = Tadke = +Seedlings yet to see their dawn

      + +

      = Scratch = +The humdrum of a chore list

      + +]]> +
      +
      + curve + ~/usr/basant/src/builder/kitaab-builder/buildcurve.html + ~/usr/basant/src/builder/kitaab-builder/buildcurve.html + 2021-10-13 22:50:07.376490 + +is: Librem 13 v3 +:rock:hardware: +boot encrypted: yes

      +

      = Tasks =

      +
        +
      • fix kitaab
      • +
      • install nix
      • +
      • change to bspwm
          +
        • get bspwm config from old file
        • +
        +
      • +
      +

      = Software =

      +
        +
      • GPXViewer - delete? (cairo not found)
      • +
      +

      = Data =

      +
        +
      • ssh keys
      • +
      • gpg subkeys
      • +
      +]]> +
      +
      + webquotes + ~/usr/basant/src/builder/kitaab-builder/buildwebquotes.html + ~/usr/basant/src/builder/kitaab-builder/buildwebquotes.html + 2021-09-26 03:57:14.150739 + += Generated Tags = +== webquote ==

      + +

      title Ask HN: What are some skills you have that are worth learning? | Hacker News +:webquote: https://news.ycombinator.com/item?id=23758188 +date [2020-10-03 Sat 15:51]

      +

      "the things you own, end up owning you",

      +
      +

      title Ask HN: What are some skills you have that are worth learning? | Hacker News +:webquote: https://news.ycombinator.com/item?id=23758188 +date [2020-10-03 Sat 15:52]

      +

      “A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.” ~ Robert Anson Heinlein

      +
      +

      title Perlisisms - "Epigrams in Programming" by Alan J. Perlis +:webquote: https://www.cs.yale.edu/homes/perlis-alan/quotes.html +date [2020-10-07 Wed 00:03]

      +
        +
      1. Dealing with failure is easy: Work hard to improve. Success is also easy to handle: You've solved the wrong problem. Work hard to improve.
      2. +
      +
      +

      title Perlisisms - "Epigrams in Programming" by Alan J. Perlis +:webquote: https://www.cs.yale.edu/homes/perlis-alan/quotes.html +date [2020-10-07 Wed 00:03]

      +
        +
      1. The proof of a system's value is its existence.
      2. +
      +
      +

      title Perlisisms - "Epigrams in Programming" by Alan J. Perlis +:webquote: https://www.cs.yale.edu/homes/perlis-alan/quotes.html +date [2020-10-07 Wed 00:04]

      +
        +
      1. Don't have good ideas if you aren't willing to be responsible for them.
      2. +
      +
      +

      title Perlisisms - "Epigrams in Programming" by Alan J. Perlis +:webquote: https://www.cs.yale.edu/homes/perlis-alan/quotes.html +date [2020-10-07 Wed 00:05]

      +
        +
      1. Think of all the psychic energy expended in seeking a fundamental distinction between "algorithm" and "program".
      2. +
      +
      +

      title Perlisisms - "Epigrams in Programming" by Alan J. Perlis +:webquote: https://www.cs.yale.edu/homes/perlis-alan/quotes.html +date [2020-10-07 Wed 00:05]

      +
        +
      1. The goal of computation is the emulation of our synthetic abilities, not the understanding of our analytic ones.
      2. +
      +
      +

      title Perlisisms - "Epigrams in Programming" by Alan J. Perlis +:webquote: https://www.cs.yale.edu/homes/perlis-alan/quotes.html +date [2020-10-07 Wed 00:06]

      +
        +
      1. Perhaps if we wrote programs from childhood on, as adults we'd be able to read them.
      2. +
      +
      +

      title Perlisisms - "Epigrams in Programming" by Alan J. Perlis +:webquote: https://www.cs.yale.edu/homes/perlis-alan/quotes.html +date [2020-10-07 Wed 00:07]

      +
        +
      1. Recursion is the root of computation since it trades description for time.
      2. +
      +
      +

      title Humans are more closely related than we commonly think | Hacker News +:webquote: https://news.ycombinator.com/item?id=24686904 +date [2020-10-07 Wed 00:15]

      +

      An intuition about the "appearing trillions of times in a family tree" is to realize that family trees are actually a binary tree extending backwards in time--i.e. each person has exactly two parents, who have exactly two parents, and so on. So N generations back, there are 2^N individuals. Obviously, there weren't 2^100 people on Earth at any point in time, so this backwards tree starts folding back on itself, containing duplications. Go back far enough and there is a set of individuals who were alive at a particular point in time that completely cover that forward tree.

      +
      +

      title Ask HN: What is your favorite motto? | Hacker News +:webquote:quote: https://news.ycombinator.com/item?id=24436135 +date [2020-10-07 Wed 00:28]

      +

      "A witty saying proves nothing."

      +
      +

      -- Voltaire

      +

      title Ask HN: What is your favorite motto? | Hacker News +:webquote: https://news.ycombinator.com/item?id=24436135 +date [2020-10-07 Wed 00:29]

      +

      "Conformity or rebellion?"

      +
      +

      “Neither one. Both ways are simple-minded– they are only for people who cannot cope with contradiction and ambiguity.” - Neal Stephenson's The Diamond Age

      +

      title Ask HN: What is your favorite motto? | Hacker News +:webquote:quote: https://news.ycombinator.com/item?id=24436135 +date [2020-10-07 Wed 00:30]

      +

      "Everything in excess! To enjoy the flavor of life, take big bites. Moderation is for monks."

      +
      +

      Lazarus Long, from Heinlein's "Time Enough for Love"

      +

      title Ask HN: What is your favorite motto? | Hacker News +:webquote:quote: https://news.ycombinator.com/item?id=24436135 +date [2020-10-07 Wed 00:30]

      +

      “It is not necessary for a man to be actively bad in order to make a failure in life; simple inaction will accomplish it. Nature has everywhere written her protest against idleness; everything which ceases to struggle toward an ideal, the constant effort to get higher and further, which develops manhood and character.”

      +
      +

      ― James Terry White

      +

      title Ask HN: What is your favorite motto? | Hacker News +:webquote:quote: https://news.ycombinator.com/item?id=24436135 +date [2020-10-07 Wed 00:31]

      +

      ‘If I were to wish for anything, I should not wish for wealth and power, but for the passionate sense of the potential, for the eye which, ever young and ardent, sees the possible. Pleasure disappoints, possibility never. ’

      +
      +
        +
      • Kierkegaard
      • +
      +

      title Ask HN: What is your favorite motto? | Hacker News +:webquote:quote: https://news.ycombinator.com/item?id=24436135 +date [2020-10-07 Wed 00:32]

      +

      "More broadly, nobody is going to teach you to think for yourself. A large fraction of what people around you believe is mistaken. Internalize this and practice coming up with your own worldview. The correlation between it and those around you shouldn't be too strong unless you think you were especially lucky in your initial conditions."

      +
      +

      title Ask HN: What is your favorite motto? | Hacker News +:webquote:quote: https://news.ycombinator.com/item?id=24436135 +date [2020-10-07 Wed 00:36]

      +

      “If you’re not willing to go too far, you’ll never go far enough.”

      +
      +

      title Some thoughts on a strategy to force a reduction of hours of labor | The Real Movement +:webquote: https://therealmovement.wordpress.com/2017/05/01/some-thoughts-on-a-strategy-to-force-a-reduction-of-hours-of-labor/ +date [2020-10-11 Sun 18:40]

      +

      Free time is the abolition of production, distribution and labor as the organizing principle of society.

      +
      +

      title Some thoughts on a strategy to force a reduction of hours of labor | The Real Movement +:webquote: https://therealmovement.wordpress.com/2017/05/01/some-thoughts-on-a-strategy-to-force-a-reduction-of-hours-of-labor/ +date [2020-10-11 Sun 18:41]

      +

      The very idea of placing an embargo on labor time is so outrageous as to be unthinkable. It will take some time for people to adjust. People who today would not consider walking off the job to win union recognition have to be convinced to walk off to emancipate themselves from wage slavery entirely.

      +
      +

      title SoyWiki +:webquote: http://danielchoi.com/software/soywiki.html +date [2020-10-11 Sun 19:35]

      +

      Because the link pattern is so minimal and succinct, writing wiki links interrupts your flow of thought less than other wiki link patterns. +Comment: +this is why i dont like camel case. having to decide a name at all can be limiting.

      +
      +]]> +
      +
      + nixOS + ~/usr/basant/src/builder/kitaab-builder/buildnixOS.html + ~/usr/basant/src/builder/kitaab-builder/buildnixOS.html + 2021-09-19 23:15:42.873157 + +:index:

      +

      nixpkgs

      +

      = basics = +nix is a functional, immutable package manager +nix (the package manager) is written in the nix language +nixOS is a linux distribution built on top of the nix package manager

      +

      in nixOS there are 2 kinds of packages. Regular packages and modules which do the configuration management of said packages. Both of these are written in the nix language. Even on nixOS configuration files generally cannot be set through the package manager. Insead home-manager can be used.

      +

      = installing nix package manager = +curl -o install-nix https://nixos.org/nix/install +curl -o install-nix.asc https://releases.nixos.org/nix/nix-2.3.7/install.asc +gpg2 --recv-keys B541D55301270E0BCF15CA5D8170B4726D7198DE +gpg2 --verify ./install-nix.asc +sh ./install-nix +rm ./install-nix.asc ./install-nix

      +

      = nix-isms = +dev environments: + generally the right way to define dev environments is through a shell.nix file which gets invoked when calling nix-shell + in this file we define which packages we expect in order to build and run the program

      +
      from there we can add it to a specific version of nixpkgs to reference and build tests, as well as flesh out a CI pipeline
      +
      +

      = build options = +in NixOS it often feels like the options are the magic part of building software. everyone seems to have just the right options in order to build the software they need +however, fear not, you too can be a master of options by searching at: +https://search.nixos.org/options or nixos-option

      +

      = install the OS = +https://gist.github.com/ladinu/bfebdd90a5afd45dec811296016b2a3f

      +

      have to use LUKS1 (grub2 doesn't support luks2 -> should be available by grub2.06)

      +

      = Generated Tags =

      +

      == nix ==

      + +]]> +
      +
      + vim2nix + ~/usr/basant/src/builder/kitaab-builder/buildvim2nix.html + ~/usr/basant/src/builder/kitaab-builder/buildvim2nix.html + 2021-09-12 23:03:38.164103 + +:vim:nix:

      +

      pull upstream changes +create a github api key so update.py doesn't get rate limited +run update: +GITHUB_API_KEY=<> ./update.py --add "/" +build the vim plugin: +nix-build -A vimPlugins. +test the installation: +nixos-rebuild test -I nixpkgs=~/usr/nixpkgs/

      +

      = Generated Tags =

      +

      == vim ==

      + +]]> +
      +
      + see + ~/usr/basant/src/builder/kitaab-builder/buildsee.html + ~/usr/basant/src/builder/kitaab-builder/buildsee.html + 2021-09-12 19:03:55.842223 + +:blog:maze:writing:

      +

      this is the Kitaab +it's not yours but you are free to look through it

      +

      it captures many details on the 200927-0111. but it is a particular structure used by a specific practioner. How you use it is up to you.

      +]]> +
      +
      + tidalcycles + ~/usr/basant/src/builder/kitaab-builder/buildtidalcycles.html + ~/usr/basant/src/builder/kitaab-builder/buildtidalcycles.html + 2021-09-12 19:03:55.842223 + +:generative: += start = +to start tidal cycles: +run 'scide' (or run the SuperCollider IDE) in terminal to start SuperCollider server +execute the following code in scide: +include("SuperDirt") +SuperDirt.start

      +

      open a new terminal and run tidalvim +you should now be running tidal, use ctrl+E to pass lines to tidal from vim

      +

      = basics = +when you add more sounds to each cycle, it speeds up, the time of the cycle remains constant

      +
      ----- is the buffer to super collider, there are 9 opened by default in tidal
      +/     --- the "command" to run
      +
      +

      v v +d1 $ sound "bd:2 bd bd ~" + ^ ^ ^ + \ \ --- is a rest note + \ --- is the sound that is going to be played; play the 3rd (0 indexed) sound in bd + --- magical $ notation

      +

      = subsequences = +using [] we can create sub sequences that run "together" in the same step of each cycle +this can be done recursively

      +

      using this we can achieve nice compound time signatures: +d1 $ n "[0 2 1] [4 4 5]" # s "drum"

      +

      alternative notation: +d1 $ n "0 2 1 . 4 4 5" # s "drum"

      +

      = speeding, slowing, repeating =

      +
        +
      • is the same as a subsequence (s "kick*2" == s "[kick kick]") +! is the same as repeating the sound (s "kick!2" == s "kick kick") +/ "divides" the step into n steps and alternates them
      • +
      +

      we can combine these to shorten lengthy things:

      +

      s "[kick [lo hi]/2]*2" == s "kick lo kick hi"

      +

      = polyphony =
      +, allows us to have multiple "tracks" in the same pattern but they must be in a subsequence!

      +

      d1 $ s "[bd sn, lo hi lo lo]"

      +

      d1 $ s "bd ~ sn ~" +d2 $ s "lo hi lo lo"

      +

      are the same

      +

      {} changes tidalcycles to make the steps align instead of the cycles aligning

      +

      = effects & commands =

      +

      stut - create echos +example + d1 $ stut 4 0.5 (-0.1) $ s "bd sn"

      +

      = adding a samples directory = +File > Open Start Up File > Add line ~dirt.loadSoundFiles("path/to/directory/*");

      +

      = pipes = +|> is the same as #, it takes values from the right and structure from the left +| indicates which side to take structure from +and the arrow indicates which side to take values from +hence with the following combinations +|> +<| +|<

      +

      | +we can mix and match any combinations

      +
      +]]> +
      +
      + linux + ~/usr/basant/src/builder/kitaab-builder/buildlinux.html + ~/usr/basant/src/builder/kitaab-builder/buildlinux.html + 2021-09-12 19:03:55.841223 + +linux tips and tricks +:dev: +nixOS

      +

      = installing an app to the gnome menu = +add an desktop entry to ~/.local/share/applications/ for desktop entries available to a single user (look in that folder for examples)

      +

      = cron = +crontab -e to edit the cron file +cron takes 5 inputs followed by the CMD you wish to run:

      +
        +
        • +
          • +
            • +
              • +
              • ls +min hour day month week
              • +
              +
            • +
            +
          • +
          +
        • +
        +
      • +
      +

      the above cron tag will run ls every minute of every day all the time. Hour is in 24hr format. So +00 00 * ~/scripts/music-pull +will run music-pull everyday at 12AM

      +

      its generally advisable to schedule these scripts at specific odd times so that they don't clash with other things

      +

      There are also other types of formats: +@reboot (i've run into trouble with this, as it is only called specifically when the computer is rebooted, not at any boot)

      +

      = ssh copy = +to copy your ssh key to a new computer run +ssh-copy-id user@server

      +

      = ssh config = +the ssh config file is truly versatile

      +

      = hamachi = +stop: /etc/init.d/logmein-hamachi stop +start: /etc/init.d/logmein-hamachi start

      +

      = git = +rename a branch:

      +
        +
      • git branch -m
      • +
      +

      pull upstream master changes:

      + +

      see remote repos:

      +
        +
      • git remote -v
      • +
      +

      add remote repo:

      +
        +
      • git remote add ssh://<user>@:<dir/of/remote>
      • +
      • git remote add https://<web.repo.com>:<dir/to/remote>
      • +
      +

      create a git branch:

      +
        +
      • git branch
      • +
      +

      checkout a branch:

      +
        +
      • git checkout
      • +
      +

      push to specific branch:

      +
        +
      • git push --set-upstream
      • +
      +

      = systemd = += theming =

      +]]> +
      +
      + maze + ~/usr/basant/src/builder/kitaab-builder/buildmaze.html + ~/usr/basant/src/builder/kitaab-builder/buildmaze.html + 2021-09-12 19:03:55.841223 + +:writing:blog:

      +

      Who am I writing for?

      +

      What am I trying to say?

      +

      How am I going to say/show it?

      +

      ============================= +ive been thinkingabout this a bunch and i kinda want my blog to be more "expanding" and interactive. branching narratives to follow that all tell a story, amd different visualizations and paths through and around this "web". entangaled and complicated like a wiki, but personal and navigable and spacious.

      +

      experiments in random linking, dark patterns, generated content, luck, and exploration. reflective of both myself as enigmatic, ▞▘▙▞▛▚▓▛ and intimate yet also of the internet now, Maze like and cofusing
      +"portals" to all the places my mind frequently wanders, some little story about a character thats based on me (a narrator?)

      +

      404 pages and redirects +cloaking +story telling +ever changing, like harry potter +identity posts as corner stones, hard to get to +challenging to navigate

      +

      aesthetic cultivation - waterfalls

      +

      narrative form of "Introduction" that is posted on my blog. +i want it to introduce them to my philosophies, interests, organization and perspective. i want it to turn in on itself and be confusing and well written. where i talk about all the things that are important to me. i want it to be the moral foundation, a rock that i can look back on and rely on to remind me of myself. i'm not quite sure how i'm going to do that, but i'm going to try.

      +]]> +
      +
      + Postgres Commands + ~/usr/basant/src/builder/kitaab-builder/buildpsql.html + ~/usr/basant/src/builder/kitaab-builder/buildpsql.html + 2021-09-12 19:03:55.841223 + +%title Postgres Commands +:dev: +%date 20200109-1320

      +

      = Quick Tips = +\l List all Databases +\c <database> Connect to a database +\dt List all tables (once connected to a db) +DELETE FROM <table> WHERE <condition> delete rows from a table +Strings must be wrapped in '' +create a table: +CREATE TABLE <table_name>( +column1 datatype, +column2 datatype, +column3 datatype, +..... +columnN datatype, +PRIMARY KEY( one or more columns ) +);

      +]]> +
      +
      + python + ~/usr/basant/src/builder/kitaab-builder/buildpython.html + ~/usr/basant/src/builder/kitaab-builder/buildpython.html + 2021-09-12 19:03:55.841223 + +:dev:python:tools:

      +

      = things to learn =

      +
        +
      • debugger: pdb
      • +
      • typing: mypy
      • +
      • testin: pytest
      • +
      • logging: logger
      • +
      +

      creating portable dev environments using mach-nix

      +]]> +
      +
      + Ideas page + ~/usr/basant/src/builder/kitaab-builder/buildideas.html + ~/usr/basant/src/builder/kitaab-builder/buildideas.html + 2021-09-12 19:03:55.817223 + +%title Ideas page +:idea: +%date 240121 12:34

      +

      Water color painting +Forging a ring +Skydiving +Shooting a gun

      +]]> +
      +
      + intro + ~/usr/basant/src/builder/kitaab-builder/buildintro.html + ~/usr/basant/src/builder/kitaab-builder/buildintro.html + 2021-09-12 19:03:55.817223 + +:sealight.services:writing:

      +

      a small club for my friends? +start with just a matrix server and see if i can run one for just my friends, expand from there as necrssaey/desired

      +

      Narrative

      +

      its a scuttlebutt pub? or start with that.

      +

      27/04 - thinking if calling it "the others" in a find the others way

      +

      Thinking about situations for when people ask me about instagram/fb/how to contact them generally, and what I can do about it. I was thinking the best way is to start a community of people that i can invite if I think they're cool. The barrier to entry is actually a good thing? But this is not exclusively the context I have been thinking about this in. I also would like to start some kind of node/hub thing like fox has got going on with lain.haus/pixie.town. but i'm not sure what i'm after and I don't think I want to just give out open invites.

      +

      I'm thinking about whether I would want my irl friends to join it or online friends and how to shape the community such that everyone feels welcome. If it were to be with IRL folk, I would create a card on which is printed either a unique (probably expensive but "more secure" -- should that matter?) or just a link to sign up with my community. The trouble with these is always getting it off the ground. And of course the scale I'm looking for. i wouldn't want to hand out over 100 invites at least to start with -- but I'd need it to all be federated which isn't too difficult all the software already exists

      +

      speaking of software I'm questioning what services to run. What kind of community am I targeting here? How should I react to the people joining? I think I'd want to have a chat server and some kind of voice communication channel, i think that is important. at the very least and probably git too. i'd need pixelfed for insta-normies, but i'm wondering whether to do pleroma/mastodon. It could really strengthen the community given that we don't have much tying us together to talk about in one chat room. chat rooms need to be focused, toots don't. maybe I should skip out on a chat server? maybe make it exclusive? even cybre.space can't get it's matrix room to take off. +on a technical level I'd have to figure out how to make all the sign ups happen through 1 signup, or some sort of form? this is already turniing into a very large project...

      +

      Also thinking about what to call it. I have many ideas relating to a garden? I'm picturing a quiet cove or hidden bushland deep in a forest. A magical spot that we work together to build and create and own and share with others we trust. a faerie circle.

      +

      thats it. i figured out what i'm trying to do here. I'm trying to get 80 people together to form a cohort so we can split into smaller groups and find the others. everybody should get 3 invites, and i will start by inviting 20 people. now i need to think hard about which 20 people to start with, how to get a diverse crew and write a story to convince people to join, and somehow figure all the rest out.

      +]]> +
      +
      + hitman-roguelike + ~/usr/basant/src/builder/kitaab-builder/buildhitman-roguelike.html + ~/usr/basant/src/builder/kitaab-builder/buildhitman-roguelike.html + 2021-09-12 19:03:55.816223 + +:idea:game:dev:

      +

      A top down Hitman-like roguelike where you can gain abilities and equipment in order to take down a target. Based in a fantasy realm. Loosely related to theif too. Randomized level and floor plans. Environment plays a key role.

      +

      If Hotline Miami had a stealth mode.

      +

      Skills include:

      +
        +
      • blink
      • +
      • disguise
      • +
      • decoy?
      • +
      +

      enemy AI:

      +
        +
      • communicate
      • +
      • call for backup
      • +
      • put the environment in a heightened state
      • +
      +]]> +
      +
      + datalife + ~/usr/basant/src/builder/kitaab-builder/builddatalife.html + ~/usr/basant/src/builder/kitaab-builder/builddatalife.html + 2021-09-12 19:03:55.815223 + +:puralek:

      +

      This basically became Puralek + = my life in data =

      +
        +
      • shaarli connection
      • +
      • webpage data sharing

        +

        what metrics to use for what data?

        +

        completed/month +total +task tags

        +

        incongruencies

        +
      • +
      +]]> +
      +
      + aardwolf + ~/usr/basant/src/builder/kitaab-builder/buildaardwolf.html + ~/usr/basant/src/builder/kitaab-builder/buildaardwolf.html + 2021-09-12 19:03:55.812223 + +:devops:rust:contribution:docker: +A federated social network built in Rust

      +

      = Links = +project home: https://github.com/Aardwolf-Social +install: https://github.com/Aardwolf-Social/aardwolf/blob/master/INSTALL.md

      +

      == aardwolf ==

      + +]]> +
      +
      + auggar + ~/usr/basant/src/builder/kitaab-builder/buildauggar.html + ~/usr/basant/src/builder/kitaab-builder/buildauggar.html + 2021-09-12 19:03:55.812223 + +:dev:nix:python:devops:docker:contribution: +A merveilles webring aggregator started by Preston

      +

      github: https://github.com/LiminalCrab/auggar/

      +

      I'm helping Preston with the Jinja templating as well as making the deploy portable probably using Docker

      +

      The trouble is I can't get it to build. I started with nix using it as an excuse to try mach-nix and generally make environments portable using nix. Didn't work for reasons covered 210416-2252

      +

      Next to try Docker

      +]]> +
      +
      + Punya + ~/usr/basant/src/builder/kitaab-builder/buildPunya.html + ~/usr/basant/src/builder/kitaab-builder/buildPunya.html + 2021-09-12 19:03:55.809223 + +%title Punya +:nix:ops:

      +

      = Status = +renewed ->

      +

      nixOS rebirth. +The ability to conjure my machines from thin air

      +

      tools

      +

      gnome -> bspwm + sxhkd + lightDM +tidalVM or PopOS_Shell +alacritty/tilix +patchbay +firefox (these sync once logged into firefox)

      +
        +
      • wallbag
      • +
      • shaarlier
      • +
      • simple tab groups
      • +
      • uMatrix
      • +
      • vimperator
      • +
      • dark reader
      • +
      • css +fish / zsh (powerlevel10k) +newsflash +geary -> thunderbird / neomutt +telegram, fractal -> element +mastodon +neovim
      • +
      • plugins/vimrc +homemanager? +syncthing +ripcord +processing +vcv-rack +tidalcycles +signal +task warrior
      • +
      +]]> +
      +
      + AlgoVPN + ~/usr/basant/src/builder/kitaab-builder/buildAlgoVPN.html + ~/usr/basant/src/builder/kitaab-builder/buildAlgoVPN.html + 2021-09-12 19:03:55.808223 + +:service:ops:

      +

      bowl still on Ubuntu LTS 16.04, really should upgrade. +Can't install VPN throgh Algo

      +]]> +
      +
      + Backups + ~/usr/basant/src/builder/kitaab-builder/buildBackups.html + ~/usr/basant/src/builder/kitaab-builder/buildBackups.html + 2021-09-12 19:03:55.808223 + +%title Backups +:puralek:backup:

      +

      200930-2316

      +

      Offsite: Blackblaze +Cold storage: 201013-2143 +Software: Borg

      +

      = Software Checklist =

      +
        +
      • [x] Nextcloud #74c15544
      • +
      • [x] TaskWarrior #b0c4980a
      • +
      • [x] Wallabag #72818668
      • +
      • [x] Shaarli #1a90133a
      • +
      • [x] beancount + fava (finances) #0432e317
      • +
      • [x] music #99673324
      • +
      • [x] music-remote #15de5305
      • +
      +

      = Guides =

      + +]]> +
      +
      + Kitaab + ~/usr/basant/src/builder/kitaab-builder/buildKitaab.html + ~/usr/basant/src/builder/kitaab-builder/buildKitaab.html + 2021-09-12 19:03:55.808223 + +:blog:maze:writing:

      +

      you've been before. you recall this space, vaguely. the memory lingers on the outskirts of certainty. when were you here? what is it about this place? the way the papers are laid out just so? the casual angle of the chair. devu-ju usually isn't this powerful.

      +

      a scrawl of indecipherable runes, ever shifting. are you dreaming? is that why you remember? is that why you forgot?

      +

      Something shifts in your pattern recognition and you can see

      +]]> +
      +
      + 201105 jrnl + ~/usr/basant/src/builder/kitaab-builder/build201105.html + ~/usr/basant/src/builder/kitaab-builder/build201105.html + 2021-09-12 19:03:55.800223 + +%title 201105 jrnl +:gratitude: +%date 051120 00:31

      +

      today i am grateful for

      +
        +
      • all the data i still have from my youth
      • +
      • the friends that put up (and continue to put up) with my insufferable ass
      • +
      • napping for like 2 hours during work
      • +
      • still getting praised at work
      • +
      • all the people who've made me who i am now
      • +
      • all the people ive yet to meet who will also change my life
      • +
      +]]> +
      +
      + Down the rabbit hole + ~/usr/basant/src/builder/kitaab-builder/build210624-1517.html + ~/usr/basant/src/builder/kitaab-builder/build210624-1517.html + 2021-06-24 15:17:00 + +%title Down the rabbit hole +:cycle: +%date 2021-06-24 15:17

      +

      I went down the fixie rabbit hole. Here's some knowledge I came back with

      +

      = frames =

      +
        +
      • different materials have different benefits and draw backs, i chose chromoloy steel because it's durable and still fairly light
      • +
      • look at the welds to see the quality

        +

        = wheels =

        +
      • +
      • wheel strength is determined by number of spokes
      • +
      • less spokes = faster, more spokes = durable
      • +
      • 32 spokes (32T?) is the standard

        +

        = quality =

        +
      • +
      • the finish, feel and attention to detail are all sigs of a good bike
      • +
      • good bike vendors provide specific parts lists and geometry charts

        +

        = geometry =

        +
      • +
      • aggressive angles
      • +
      • idk really know much about this
      • +
      +]]> +
      +
      + Terrarium Making + ~/usr/basant/src/builder/kitaab-builder/build210612-1752.html + ~/usr/basant/src/builder/kitaab-builder/build210612-1752.html + 2021-06-12 17:52:00 + +%title Terrarium Making +:hobbies: +%date 2021-06-12 17:52

      +

      In order to build a terrarium you need:

      +
        +
      • A glass jar
      • +
      • Some rocks
      • +
      • Activated Charcoal
      • +
      • Cotton
      • +
      • Netting
      • +
      • Soil
      • +
      • Plants
      • +
      +]]> +
      +
      + Mounting Encrypted Drives + ~/usr/basant/src/builder/kitaab-builder/build210607-0157.html + ~/usr/basant/src/builder/kitaab-builder/build210607-0157.html + 2021-06-07 01:57:00 + +%title Mounting Encrypted Drives +:linux:ops:encrypt:lvm: +%date 2021-06-07 01:57

      +

      mounting encrypted lvm drives:

      +
        +
      • cryptsetup luksOpen /dev/sdX vgroot
      • +
      • vgchange -a y
      • +
      • mount /dev/vg/root /mnt
      • +
      +]]> +
      +
      + Pirating ebooks on irc + ~/usr/basant/src/builder/kitaab-builder/build210521-1751.html + ~/usr/basant/src/builder/kitaab-builder/build210521-1751.html + 2021-05-21 17:51:00 + +%title Pirating ebooks on irc +:pirate:irc:books: +%date 2021-05-21 17:51

      +

      Join irc.irchighway.net +Connect to #ebooks +@Search <book or author +Extract the archive file +!<username> <filename> is generally the format contained within the file

      +]]> +
      +
      + Aardwolf progress report + ~/usr/basant/src/builder/kitaab-builder/build210425-1724.html + ~/usr/basant/src/builder/kitaab-builder/build210425-1724.html + 2021-04-25 17:24:00 + +%title Aardwolf progress report +:dev:docker:aardwolf:contribution: +%date 2021-04-25 17:24

      +

      pushed to git +confirmed psql available +cargo run --bin setup doesn't compile +no error

      +

      docker-entrypoint.sh on empty loop to access docker container

      +]]> +
      +
      + Learning Vimscript + ~/usr/basant/src/builder/kitaab-builder/build210424-1332.html + ~/usr/basant/src/builder/kitaab-builder/build210424-1332.html + 2021-04-24 13:32:00 + +%title Learning Vimscript +:vim:dev: +%date 2021-04-24 13:32

      +

      Need to learn vimscript to read VimZettel 210423-1907 +I bought practical Vim to help me through the intricacies of this text editor

      +

      It seems like each function is defined in ...

      +]]> +
      +
      + kitaab features + ~/usr/basant/src/builder/kitaab-builder/build210423-1907.html + ~/usr/basant/src/builder/kitaab-builder/build210423-1907.html + 2021-04-23 19:07:00 + +%title kitaab features +:meta:memex:dev:puralek: +%date 2021-04-23 19:07

      +

      some things i want for kitaaB

      +
        +
      • sort by last updated
      • +
      • automatically update specific (should i tag these?)
      • +
      • have /now be automatically set with the above two
      • +
      • integrate with taskwarrior even more? how?
      • +
      • ???
      • +
      +

      what needs to be done:

      +
        +
      • read VimZettel
      • +
      • understand vimscript
      • +
      • write the necessary functions in Lua?
      • +
      +

      210424-1332

      +]]> +
      +
      + Aardwolf docker hell + ~/usr/basant/src/builder/kitaab-builder/build210419-2204.html + ~/usr/basant/src/builder/kitaab-builder/build210419-2204.html + 2021-04-19 22:04:00 + +%title Aardwolf docker hell +:devops:docker:aardwolf: +%date 2021-04-19 22:04

      +

      Trying to get rust to work in a docker container is driving me crazy. +Using the default rust container doesn't give me the nightly version which breaks aardwolf? +Creating an alpine container with rust toolchain works, but once I get to docker-entrypoint, it isn't able to create a temporary file which is necessary for installation to continue. I tried install rust at /usr/local/{rust,cargo}, and /opt/{rust,cargo} and now /app/{rust,cargo} which I hope won't fuck shit up. +Trying to grant permissions (chmod) on the /usr/local and /opt directories takes forever with docker, but still led to the same error. I didn't try chown

      +]]> +
      +
      + Intial thoughts + ~/usr/basant/src/builder/kitaab-builder/build210417-1502.html + ~/usr/basant/src/builder/kitaab-builder/build210417-1502.html + 2021-04-17 15:02:00 + +%title Intial thoughts +:aardwolf:devops: +%date 2021-04-17 15:02

      +

      Below are my initial thoughts from poking my head around the aardwolf reposity += ARCHIVE =

      +

      As far as I understand the design of the project it looks like this:

      +

      ~+ DATABASE MAGIC +~ +ructe -> Create templates +Templates -> Actix to make it interactive

      +

      Currently we're at ructe setup. I'm expecting HTML output served through the NGINX configuration. +I need to write a create database script, create table, somewhere to store the psql database and somewhere to output the static files.

      +]]> +
      +
      + Aardwolf Docker creation + ~/usr/basant/src/builder/kitaab-builder/build210417-1455.html + ~/usr/basant/src/builder/kitaab-builder/build210417-1455.html + 2021-04-17 14:55:00 + +%title Aardwolf Docker creation +:devops:docker:aardwolf:contribution: +%date 2021-04-17 14:55

      +

      = Docker structure = +Dockerfile creates an alpine installation and pins the right version of the rust toolchain +docker-entrypoint.sh accept sthe environment variable AARDWOLF_SETUP_DB which if true will run cargo run --bin setup +otherwise it will just start the container +Docker-compose.yml will configure a psql container, and an aardwolf instance to ease over development issues.

      +

      I need to learn how to set the environment variable for configuring the psql server only once.

      +

      = Helpful links = +https://github.com/Aardwolf-Social/aardwolf/blob/master/INSTALL.md

      +]]> +
      +
      + Data to grab + ~/usr/basant/src/builder/kitaab-builder/build210417-0322.html + ~/usr/basant/src/builder/kitaab-builder/build210417-0322.html + 2021-04-17 03:22:00 + +%title Data to grab +:puralek: +%date 2021-04-17 03:22

      +

      Old photos I took as a kid +Emails from telos.ideate@gmail.com +Text messages from blackberry

      +]]> +
      +
      + Nix Docker + ~/usr/basant/src/builder/kitaab-builder/build210417-0308.html + ~/usr/basant/src/builder/kitaab-builder/build210417-0308.html + 2021-04-17 03:08:00 + +%title Nix Docker +:nix:docker:devops: +%date 2021-04-17 03:08

      +

      I can just use docker regularly on NixOS. That's pretty cool. +I can use Nix to build docker images instead of a Dockerfile but that seems excessive.

      +
      { pkgs ? import <nixpkgs> { system = "x86_64-linux"; } }:
      +
      +pkgs.dockerTools.buildImage {
      +  name = "hello-docker";
      +  config = {
      +    Cmd = [ "${pkgs.hello}/bin/hello" ];
      +  };
      +}
      +
      +]]> +
      +
      + mach-nix and reproducible Python builds + ~/usr/basant/src/builder/kitaab-builder/build210416-2252.html + ~/usr/basant/src/builder/kitaab-builder/build210416-2252.html + 2021-04-16 22:52:00 + +%title mach-nix and reproducible Python builds +:nix:dev:python:devops:contribution:auggar: +%date 2021-04-16 22:52

      +

      Tried to get Auggar "portable" through the use of mach-nix and the nix package manager. I couldn't quite do it, because the latest version of asyncio on whichever version of python nixpkgs mach-nix defaults to.

      +

      Hopefully by specifing specific versions of each of the plugins and the python version it will work.

      +

      = mach-nix expressions = +mach-nix env shell.nix -r requirements.txt

      +]]> +
      +
      + dreaming of futures + ~/usr/basant/src/builder/kitaab-builder/build210407-1501.html + ~/usr/basant/src/builder/kitaab-builder/build210407-1501.html + 2021-04-07 15:01:00 + +%title dreaming of futures +:writing:story: +%date 2021-04-07 15:01

      +

      i cant sleep once more so i decided to write things

      +

      i dream of volumetric displays becoming labs to represent live data. theyre interfaced with through steno-gloves, with modal based editing to allow various control over views of the data. the truly productivity obsessed wear 2 gloves, or get single monocles through which they constantly sip at information. in this world it is not raw speed which is evolutionarily optimal, but flexibility. robot hive minds generally do not take kinldy to biological life forms. signalling reinforcments, activating camoflague or remotely interfering are necesary skills to staying safe

      +

      and yet in the same world, self aseembly and disassembly of modular, independent shelter makes nomadic lifestyles sustainable. tap into mycelium networks to gain resources and share information, if you can find the way in. travel deep in-land towards the people sustaining these networks, or congrgate on sailing ships covered in mesh. low-powered thin clients, with eink displays may be the only direct descendent of the laptop, but primary computing is through discrete tokens for those with the keys to access them. distributed spindles for observability into space. storage clusters shaped into minerals that will hold form for 100s of years, supporting their own networks and contributing positively to the ecosystem. analog computers powered by simplyconfigutation of sunlight.

      +

      where once we trapped electricity in silicon and forced it to think, now we shaped light into rocks and sprouted mushrooms as we went.

      +]]> +
      +
      + Re-Thinking and Evaluating My Personal Computing + ~/usr/basant/src/builder/kitaab-builder/build210314-1815.html + ~/usr/basant/src/builder/kitaab-builder/build210314-1815.html + 2021-03-14 18:15:00 + +%title Re-Thinking and Evaluating My Personal Computing +:writing:blog: +%date 2021-03-14 18:15

      +

      I own several computers. I wear one on my wrist and carry one in my pocket everyday. I have single use devices for reading and drawing. A couple just for video games, and one specifically for work. This is not an accident. Each of these devices were picked out by me, for aesthetic and functional qualities. My watch is a Pebble Time Round, built by a company that no longer operates, with severs powered by a bunch of die-hard hackers who have gone to incredible effort to care for a device we love; I bought mine second hand and have replaced the battery (and soon the glass too) on mine. My phone has a keyboard (FX Tec Pro 1). My PSP is hacked.

      +

      Which is to say I think a lot about what I want my computers to do, and how to go about that. It's been more than 2 years since I bought my brand new Purism Librem 13v3, and it's already beginning to fail, so I've been thinking about what I want to do when the time comes to replace it. I looked into repairing it, but it might cost more than a new computer, and so I wonder about what's better. I believe the primary environmental costs come from mining. Trashing fairly functional hardware for new silicon perhaps isn't without it's problmes, but if I start fresh and right, perhaps I can build a computer that will last longer than I will. Inspired by The Heirloom Computer, 50 Year Computing and the various projects referenced in these documents, I began reflecting on what I want out of my personal computing.

      +

      = Requirements =

      +
        +
      • USB-C and A ports
      • +
      • HDMI
      • +
      • Networking stack (with kill switch)
      • +
      • Small size
      • +
      • Battery powered
      • +
      +

      = Options =

      +
        +
      • Computer in a Stick
      • +
      • NUCs
      • +
      • SBCs
      • +
      • eMMC boards?
      • +
      +]]> +
      +
      + Memex + ~/usr/basant/src/builder/kitaab-builder/build210222-0114.html + ~/usr/basant/src/builder/kitaab-builder/build210222-0114.html + 2021-02-22 01:14:00 + +%title Memex +:meta:index:puralek: +%date 2021-02-22 01:14

      +

      Yaad +Kitaab

      +

      = Generated Tags =

      +

      == meta ==

      + +]]> +
      +
      + Shaarli <-> Kitaab bridge + ~/usr/basant/src/builder/kitaab-builder/build210124-0407.html + ~/usr/basant/src/builder/kitaab-builder/build210124-0407.html + 2021-01-24 04:07:00 + +%title Shaarli <-> Kitaab bridge +:dev:idea:kitaab: +%date 2021-01-24 04:07

      +

      A small piece of software that allows me to bridge between shaarli's plain txt database, and links in Kitaab

      +

      Ideally this would look like accessing a copy of the db, gunziping(?) it and then being able to search that file, insert the link, and pass that information back to shaarli (which will probably require hitting the api)

      +]]> +
      +
      + Turning Box into Bowl + ~/usr/basant/src/builder/kitaab-builder/build210124-0144.html + ~/usr/basant/src/builder/kitaab-builder/build210124-0144.html + 2021-01-24 01:44:00 + +%title Turning Box into Bowl +:hardware:rock:box:bowl: +%date 2021-01-24 01:44

      +

      I desperately need to ditch bowl

      +

      I decided I don't need a new desktop PC and will just use box

      +]]> +
      +
      + Updating Curve + ~/usr/basant/src/builder/kitaab-builder/build210124-0140.html + ~/usr/basant/src/builder/kitaab-builder/build210124-0140.html + 2021-01-24 01:40:00 + +%title Updating Curve +:rock:hardware:nix: +%date 2021-01-24 01:40

      +

      Currently GNOME is too heavy for me to run much stuff concurrently on curve, I'll need to switch to a more lightweight window manager. I'm thinking bspwm + sxkhd like I used to run.

      +

      I'll probably need to write a lot of stuff to get it working right, and also dig out my old config. Seems doable

      +]]> +
      +
      + Getting Kitaab Online + ~/usr/basant/src/builder/kitaab-builder/build210124-0135.html + ~/usr/basant/src/builder/kitaab-builder/build210124-0135.html + 2021-01-24 01:35:00 + +%title Getting Kitaab Online +:blog:dstory:dev:kitaab: +%date 2021-01-24 01:35

      +

      I'm writing publicify to turn Kitaab into anish.lakhwara.com +It needs to parse tags of files, which vimwiki generates at .vimwiki_tags +I need to parse this file through python-ctags3 (https://github.com/jonashaag/python-ctags3 )

      +

      Since VimZettel uses date to create file names, I'll need to grab the title as well

      +

      There seems to be a lot of garbage tags in there, so I'll need to clean up Kitaab too

      +]]> +
      +
      + The List + ~/usr/basant/src/builder/kitaab-builder/build210124-0033.html + ~/usr/basant/src/builder/kitaab-builder/build210124-0033.html + 2021-01-24 00:33:00 + +%title The List +:dev:blog:idea:solution: +%date 2021-01-24 00:33

      +

      Cybre,Hacker,Digital,Inquisitive,Chaotic,Stubborn, +Gardener,Shaman,Artist,Sheperd,Sailor,Navigator,Climber

      +]]> +
      +
      + futon vacuum size + ~/usr/basant/src/builder/kitaab-builder/build210123-1417.html + ~/usr/basant/src/builder/kitaab-builder/build210123-1417.html + 2021-01-23 14:17:00 + +%title futon vacuum size +:hardware:design:room: +%date 2021-01-23 14:17

      +

      130x110cm

      +

      will fit the futon super smug

      +]]> +
      +
      + bed frame size + ~/usr/basant/src/builder/kitaab-builder/build210123-1414.html + ~/usr/basant/src/builder/kitaab-builder/build210123-1414.html + 2021-01-23 14:14:00 + +%title bed frame size +:hardware:design: +%date 2021-01-23 14:14

      +

      exact measurements: +190cmx130cm

      +

      buy wood slat 2~3cm less

      +]]> +
      +
      + things to buy + ~/usr/basant/src/builder/kitaab-builder/build210115-1809.html + ~/usr/basant/src/builder/kitaab-builder/build210115-1809.html + 2021-01-15 18:09:00 + +%title things to buy +:travel:moving:purchase: +%date 2021-01-15 18:09

      +

      v60 +gooseneck kettlee +coffee grinder +cleaver knife (make?) +cocktail maker +scissors +bathroom speakers +glass / wood table +side table

      +]]> +
      +
      + missing things + ~/usr/basant/src/builder/kitaab-builder/build210115-1804.html + ~/usr/basant/src/builder/kitaab-builder/build210115-1804.html + 2021-01-15 18:04:00 + +%title missing things +:travel:moving: +%date 2021-01-15 18:04

      +

      throw blanket +big glass jar +burping lid x3

      +]]> +
      +
      + Sealight & Mossnet + ~/usr/basant/src/builder/kitaab-builder/build210109-2114.html + ~/usr/basant/src/builder/kitaab-builder/build210109-2114.html + 2021-01-09 21:14:00 + +%title Sealight & Mossnet +:writing: +%date 2021-01-09 21:14

      +

      sealight.xyz the public facing beacon +Mossnet, the intimate underside

      +

      The two are entangled, and at the center is me. Though I hope this changes over time.

      +]]> +
      +
      + Matrix Bridges + ~/usr/basant/src/builder/kitaab-builder/build210103-2319.html + ~/usr/basant/src/builder/kitaab-builder/build210103-2319.html + 2021-01-03 23:19:00 + +%title Matrix Bridges +:ops:nix:sealight: +%date 2021-01-03 23:19

      +

      running Matrix Bridges is generally a 3 step process:

      +
        +
      • create a bot
      • +
      • run the appservice so that it can be registered with the bot
      • +
      • tell synapse of the bot's existence
      • +
      +

      step 2 is where nixOS comes in, if there is a module configured for the service it's not necessary to go through the configuration steps and instead write something like services.matrix-appservice-discord.enable = true; in configuration.nix +I don't yet know what to do in nixOS specifically if there is no module (write one, lol)

      +]]> +
      +
      + Hardware Projects + ~/usr/basant/src/builder/kitaab-builder/build210102-2223.html + ~/usr/basant/src/builder/kitaab-builder/build210102-2223.html + 2021-01-02 22:23:00 + +%title Hardware Projects +:hardware:list: +%date 2021-01-02 22:23

      +
        +
      • pi hole #fd42bdb6
      • +
      • kobo hardware page turner
      • +
      • mycroft ai
      • +
      • pi0 project -> 201105-2043
      • +
      • LED alerter
      • +
      +]]> +
      +
      + Vegan Chilli + ~/usr/basant/src/builder/kitaab-builder/build201219-1825.html + ~/usr/basant/src/builder/kitaab-builder/build201219-1825.html + 2020-12-19 18:25:00 + +%title Vegan Chilli +:recipe:vegan: +%date 2020-12-19 18:25

      +

      = Ingredients =

      +
        +
      • 2 tablespoons extra-virgin olive oil
      • +
      • 1 medium red onion, chopped
      • +
      • 1 large red bell pepper, chopped
      • +
      • 2 medium carrots, chopped
      • +
      • 2 ribs celery, chopped
      • +
      • ½ teaspoon salt, divided
      • +
      • 4 cloves garlic, pressed or minced
      • +
      • 2 tablespoons chili powder*
      • +
      • 2 teaspoons ground cumin
      • +
      • 1 ½ teaspoons smoked paprika*
      • +
      • 1 teaspoon dried oregano
      • +
      • 1 large can (28 ounces) or 2 small cans (15 ounces each) diced tomatoes**, with their juices
      • +
      • 2 cans (15 ounces each) black beans, rinsed and drained
      • +
      • 1 can (15 ounces) pinto beans, rinsed and drained
      • +
      • 2 cups vegetable broth or water
      • +
      • 1 bay leaf
      • +
      • 2 tablespoons chopped fresh cilantro, plus more for garnishing
      • +
      • 1 to 2 teaspoons sherry vinegar or red wine vinegar or lime juice, to taste
      • +
      +

      = Instructions = + In a large Dutch oven or heavy-bottomed pot over medium heat, warm the olive oil until shimmering. Add the chopped onion, bell pepper, carrot, celery and ¼ teaspoon of the salt. Stir to combine and cook, stirring occasionally, until the vegetables are tender and the onion is translucent, about 7 to 10 minutes. + Add the garlic, chili powder, cumin, smoked paprika and oregano. Cook until fragrant while stirring constantly, about 1 minute. + Add the diced tomatoes and their juices, the drained black beans and pinto beans, vegetable broth and bay leaf. Stir to combine and let the mixture come to a simmer. Continue cooking, stirring occasionally and reducing heat as necessary to maintain a gentle simmer, for 30 minutes. + Remove the chili from the heat and discard the bay leaf. For the best texture and flavor, transfer 1 ½ cups of the chili to a blender, making sure to get some of the liquid portion. Securely fasten the lid and blend until smooth (watch out for hot steam), then pour the blended mixture back into the pot. (Or, you can blend the chili briefly with an immersion blender, or mash the chili with a potato masher until it reaches a thicker, more chili-like consistency.) + Add the chopped cilantro, stir to combine, and then mix in the vinegar, to taste. Add salt to taste, too—I added ¼ teaspoon more at this point. Divide the mixture into individual bowls and serve with garnishes of your choice. This chili will keep well in the refrigerator for about 4 days or you can freeze it for longer-term storage.

      +]]> +
      +
      + Brighter futures series II + ~/usr/basant/src/builder/kitaab-builder/build201215-1310.html + ~/usr/basant/src/builder/kitaab-builder/build201215-1310.html + 2020-12-15 13:10:00 + +%title Brighter futures series II +:story:writing:blog: +%date 2020-12-15 13:10

      +

      The bright orange sun had become a familiar but iritable compainion along my quest. a node under my network had failed and unfortunately the redundancy hadnt planned for this. I hadnt planned for this. The inscriptions in the stone shouldnt he allowed this to happen

      +

      = idea = +the imagining better future series is about a (female) solarpunk adventurer, told in the form of diary notes. she quests around byboat or by bike and lives a nomadic life. its post-walkway, default still exists (and should reflect current civ-tech) but is unbearable to her. she meets with other walkaways learning, sharing and creating art. its a loose plot for slow life, and the kind i wish one day to lead.

      +]]> +
      +
      + random subtitle + ~/usr/basant/src/builder/kitaab-builder/build201215-1308.html + ~/usr/basant/src/builder/kitaab-builder/build201215-1308.html + 2020-12-15 13:08:00 + +%title random subtitle +:dev:blog:idea: +%date 2020-12-15 13:08

      +

      make 2 or 4 lists of adjective + nouns to describe myself and put asthe subtitle to my blog, selected randomly from each list updated once a day

      +

      210124-0033

      +]]> +
      +
      + Refusing Rating + ~/usr/basant/src/builder/kitaab-builder/build201213-1641.html + ~/usr/basant/src/builder/kitaab-builder/build201213-1641.html + 2020-12-13 16:41:00 + +%title Refusing Rating +:writing:blog:phil:web: +%date 2020-12-13 16:41

      +

      I won't like, subscribe, comment, hit the bell icon, give 5 stars, a thumbs up, or other form of feedback. I'm sorry, I know it's helpful for your platform on . Even if I liked whatever service or content you provided, I (probably) still won't do it. I won't feed the data machine. It does not need more data. The aggregate effects of better calibrated surveillance apparatus are just worse for everyone. It will only grant the entrenched system more power. Metrics cease to be useful when they become goals, and doesn't know what else to do with metrics.

      +

      Living in the modern world requires compromises, which is why I am using the platform (and have the ability to leave a signal in the first place), but I see minimizing participation as beneficial. will still collect some unavoidable data from my interactions with them, and use this data for whatever they see fit. may also already have all your past data, but that doesn't justify handing over a continuous feed. Stop using the gambler's fallacy in regards to data privacy.

      +
        +
      • Not drip feeds of narcissim-enhancing like notifications.
      • +
      • Not gated communities built out of follower counts and verified check marks.
      • +
      • Not laser focused optimization of product ranking, and user {att,re}tention
      • +
      • Not peer evaluation that leads to financial, promotional or emotional consequences
      • +
      +

      I won't engage in these.

      +

      Instead, where appropriate I will engage in:

      +
        +
      • Personal recounts of similar experiences
      • +
      • Asking or answering questions and learning more
      • +
      • Expressing appreciation explicitly
      • +
      • Constructive criticism without being mean
      • +
      • Ambient support
      • +
      • Paid exchange and/or tips for DRM free media, excellent service or physical goods
      • +
      +

      You want signals? Make them humane, understand the context. Leave messages of collaboration. Refuse parasocial relationships. Make the data open, playful, and in service of the people to which that data belongs. Technology alone won't solve social problems, and in many cases will exacerbate them. Metrics are for systems not people. Reactions aren't signs of support. I will try to minimize the power these signals possess.

      +]]> +
      +
      + What I want to talk to my Psych about + ~/usr/basant/src/builder/kitaab-builder/build201210-1913.html + ~/usr/basant/src/builder/kitaab-builder/build201210-1913.html + 2020-12-10 19:13:00 + +%title What I want to talk to my Psych about +:psych:priv:writing: +%date 2020-12-10 19:13

      +
        +
      • sleep
          +
        • why am i not sleeping well?
        • +
        • what can i do about sleep (list things i am already doing)
        • +
        • it's causing many external problems
        • +
        +
      • +
      • work
          +
        • not motivated by work at all
        • +
        • not sure what to do with my career
        • +
        • 10 year plan to live on a boat
        • +
        +
      • +
      • moving houses
          +
        • tied to work
        • +
        • greta + stress
        • +
        • talking to jxN about it
        • +
        • sydney??
        • +
        +
      • +
      • finding friends
          +
        • having only one friend group makes me unhappy
        • +
        • ties into moving
        • +
        • strategies?
        • +
        +
      • +
      • feeling hollow again
          +
        • how to deal with all the systems i thought i had in place falling apart
        • +
        +
      • +
      +]]> +
      +
      + Taming Technology + ~/usr/basant/src/builder/kitaab-builder/build201206-2150.html + ~/usr/basant/src/builder/kitaab-builder/build201206-2150.html + 2020-12-06 21:50:00 + +%title Taming Technology +:writing:blog: +%date 2020-05-13 21:50

      +

      there has been a common thread going through my mind of late that ive been meaning to write about for a while. originally i started with the idea of describing my own utilization of technology. the systems i\'ve set up to orchestrate my life; a tour of my personal digital infrastructure. and of course being a hipster computer nerd, the manner in which i use technology is partically fringe even within my own community, and especially so when compared to the average comput er user, but other than being at best mildly informative, i came to view it as self indulgent naval gazing -- afterall I already k now how that infrastructure works and have laid out many plans for how to improve it, surely my time would be better spent activel y improving it rather than explaining it (largely just to myself) again.", "then i moved on to pondering my grand debut in \"the i ndustry\" and wanted to get my thoughts in order about how I actually feel about it. this scared me because I worried my honest op inions of the surveillance industry (or \"silicon valley\" as it is colloquially referred to) would stain my chances at a job in t he very same place. i wish i was strong enough in my resolve to my ethical framework to make these comments under my \"real\" iden tity and maybe one day i will be, but today is not that day.", "from there i bounced to various cliche topics at the intersection of technology and mindfulness. digital detoxes, curtailing addicition to our smart phones, an introduction for the non-technical, how tragically easy it is to imagine better technology, media diets, and the murder (not death) of privacy and how to ressurect it all feature empty pages in my git repo. beyond repeating kitchsy blogspam my trouble with writing about these is that the problem s and solutions i see to technology go beyond any one of these issues, and even describing these issues evades a clear essence to what technology truly is.", "and so i embark on another rabit hole, but this time i emplore you to join in on the discussion.

      +]]> +
      +
      + Getting Matrix Online + ~/usr/basant/src/builder/kitaab-builder/build201129-2055.html + ~/usr/basant/src/builder/kitaab-builder/build201129-2055.html + 2020-11-29 20:55:00 + +%title Getting Matrix Online +:sealight:ops:nix:dstory: +%date 2020-11-29 20:55

      +

      Finally taking steps in almost exactly 1 year since taking up the mantle of friend-hosting (https://anish.lakhwara.com/posts/fireplace/) and I finally have a runnig matrix server that I plan to keep in production as much as I can. I worked out how to configure everything I wanted correctly by using these resources:

      + +

      = It's Always DNS = +I had two significantly large hurdles; DNS, NixOS + ACME. I started with an SRV Record to redirect all requests to chat.sealight.xyz if they were trying to reach that instance. But I couldn't quite get this to work right, and then ending up switching to an imperative step which was:

      +

      echo '{ "m.server": "chat.sealight.xyz:443" }' > /<webroot>/.well-known/matrix/server

      +

      Which removed the need for the SRV file. At this point I had a working SSL installation of NixOS 19.09 with only a synapse server running. Great first step I thought.

      +

      = Or SSL for DNS = +Then I had the bright idea to update to 20.09 so that I could run the Element web client instead of Riot (now rebranded). That was naive in hindsight. ACME, it's nixOS module and even perhaps the underlying software logo may have bugs that made their way into 20.09 and these bugs occur specifically when upgrading from the older ACME client. In order to fix this I had to delete the old user account and started fresh. +It didn't help that I would often run into Rate Limiting due to the way the nixOS ACME module works. I had to be particularly careful when running a rebuild otherwise I'd hit the rate limit. This meant I couldn't just try random fixes and hope it worked. I really had to read the logs, come to understand what was happening and why (and in case it was a rate limit just wait 1 - 3 hours before doing anything). This was a useful experience.

      +

      These resources were especially helpful in debugging ACME issues:

      + +

      = Finally = +Once I fixed the Let's Encrypt requests being sent, I was left with a beautiful static site hosted at sealight.xyz, the matrix server that federates at chat.sealight.xyz; with all handles will be of the form @user:sealight.xyz, and an Element client running at element.sealight.xyz that points users to create an account at my instance by default.

      +

      If I'm being honest I still don't understand all the intracacies of my own configuration. NixOS does an excellent job of abstracting away so much of the configuration troubles. I'm finally beginning to understand how to do things with this tool. +However it cannot abstract away everything. I need to learn nginx configuration, and what the hell SNI, SRV and .well-known have in common that makes them able to mask the URL in handles.

      +

      = Next = +I need to configure monitoring agents and plan to go with the TIG Stack +Install the Slack Bridge to help my friends migrate +Install the Telegram / Discord bridge to consolidate my online profile

      +]]> +
      +
      + Building Norns + ~/usr/basant/src/builder/kitaab-builder/build201128-1456.html + ~/usr/basant/src/builder/kitaab-builder/build201128-1456.html + 2020-11-28 14:56:00 + +%title Building Norns +:dstory:writing:generative:hardware: +%date 2020-11-28 14:56

      +

      Early on in my foray into digital music, I decided I didn't want to use a DAW. Partially because I knew doing so on Linux would be limiting, partly because I like to do things differently. My proclivity for single purpose devices naturally got me excited about norns when I heard about it. Not being a musicion I found it hard to justify paying $800USD for what could turn out to be just a toy. +When I learnt about the DIY versioun pased on an RPi, I knew I had to try it. A toy like the norns is certainly worth a hundredish dollars. Even more exciting to go from "no electronics experience" to "i built a music machine from PCB up". +So I'm now that guy. Decided to learn how to read electronics schematics so that I can build a linux machine to avoid using a DAW on a different Linux machine.

      +]]> +
      +
      + Getting to a Finished Song + ~/usr/basant/src/builder/kitaab-builder/build201128-1333a.html + ~/usr/basant/src/builder/kitaab-builder/build201128-1333a.html + 2020-11-28 13:33:00 + +%title Getting to a Finished Song +:dstory:music:generative:writing: +%date 2020-11-28 13:33

      +

      I've learnt a few ways to make digital music now, but I haven't actually Finished a Song. All I have is ways to make noise. In order to record a song I need a good microphone.

      +

      I can create sounds in TidalCycles, VCV Rack, lsdj, and nanoloop. Soon I'll also have a norns too. +I need learn how to mix and produce a finished track through something like ardour or reaper. +I've been able to install some synths (helm) and route those to Ardour. +I need to learn how to create midi notes that are played through that synth +I've configured patchage to route midi to various applications and been able to control VCV Rack and Helm through midi +I need to learn how to use a sequencer effectively +I need to learn to use synths to create the sounds I want and turn those sounds into loops and those loops into tracks and those tracks into songs

      +

      I can see a path to through the tunnel

      +]]> +
      +
      + Box Upgrade + ~/usr/basant/src/builder/kitaab-builder/build201128-1326.html + ~/usr/basant/src/builder/kitaab-builder/build201128-1326.html + 2020-11-28 13:26:00 + +%title Box Upgrade +:rocks:box: +%date 2020-11-28 13:26

      +

      I want to turn box into a music machine. Run SuperCollider + Tidal, Ardour + Synths, VCV-Rack and route things all around. I need a microphone to record things, an audio interface to work with and a powerful enough system to pull it all together. +box

      +]]> +
      +
      + Dev Stories + ~/usr/basant/src/builder/kitaab-builder/build201128-1301.html + ~/usr/basant/src/builder/kitaab-builder/build201128-1301.html + 2020-11-28 13:01:00 + +%title Dev Stories +:writing:blog:dstory: +%date 2020-11-28 13:01

      +

      In the interest of sharing Kitaab online I wanted to include more written explanations of my understanding. My idea is to write stories to accompany what I did, in the interest of solidifying my own understanding.

      +

      = ideas = +201128-1333a +Understanding Generative +201128-1456 +NixOS & the Responsibility of Power +mossnet +sealight.xyz

      +]]> +
      +
      + Chords + ~/usr/basant/src/builder/kitaab-builder/build201122-2142.html + ~/usr/basant/src/builder/kitaab-builder/build201122-2142.html + 2020-11-22 21:42:00 + +%title Chords +:music:gen:theory: +%date 2020-11-22 21:42

      +

      The reason we care about the degree of a note in the scale, is because we can use it to talk about different kinds of chords in a sequence +For the each key we can talk about it's chords. A good way to think about some songs, is major chords numbered by degree of the note. That way we can talk about the same chord progression in different keys.

      +

      hence, chord progressions can be written as numbers 1 - 6 +A chord progression and key unlocks your capacity to see the music matrix

      +]]> +
      +
      + Shaarli Setup + ~/usr/basant/src/builder/kitaab-builder/build201121-1417.html + ~/usr/basant/src/builder/kitaab-builder/build201121-1417.html + 2020-11-21 14:17:00 + +%title Shaarli Setup +:ops:nix:bowl: +%date 2020-11-21 14:17

      +

      So I finally got Shaarli all configured. It turns out the Network Redirection Error that I was facing had to do with nginx Server Blocks aka Virtual Hosts +Setting the port and IP address as the virtual host name during Shaarli setup led to some strange re-direction that neither FF nor Chrome were happy to display (though cURL didn't have any issues). I fixed this by disabling nextcloud which previously owned the non-port server host and made shaarli the only web-app running. This led to the redirect working fine and able to continue as normal. +The setup still isn't quite reproducible because I need to do ln -s $(nix eval nixos.shaarli.outPath)/* $dataDir to place all the shaarli files in the dataDir, then chown shaarli:shaarli $dataDir and finally cp config.php $dataDir/config.php to get everything running. +I had much more sucess with debugging after setting php_admin_value[error_log] = "/var/log/nginx/phpfpm.log" and using strace -p <phpfpm-pid> so that I actually knew what was going wrong. I learnt that when using root = pkgs.shaarli and setting SHAARLI_CONFIG even though shaarli does read the right config file, it doesn't seem to apply that to reading the data directory as defined by the config and was still trying to access the nix store data folder which was causing issues. +Anyways I think I now know enough that I should be able to re-configure everything pretty easily if it breaks. So Success!!

      +]]> +
      +
      + Ops tasks for bowl + ~/usr/basant/src/builder/kitaab-builder/build201119-1157.html + ~/usr/basant/src/builder/kitaab-builder/build201119-1157.html + 2020-11-19 11:57:00 + +%title Ops tasks for bowl +:bowl:nix:ops: +%date 2020-11-19 11:57

      +

      = bowl =

      +
        +
      • wireguard +try and install latest linux kernel without rebooting, and then include wireguard.nix

        +
      • +
      • wallabag +overlay the pkg to include the patch that deals with mb_str_replace

        +
      • +
      • shaarli +hack the system to set password

        +
      • +
      • nextcloud +move dataDir to /data and import backup

        +
      • +
      • navidrome +change dataDir to data, copy over music, grant permissions

        +
      • +
      • run ▜▓▛▛▕▓▞▓▞▐, beats, and see if you can get huginn configured to connect to bowl

        +
      • +
      • run fava+beancount or alternative
      • +
      • run grasp server?
      • +
      • maybe setup telegraf agent?
      • +
      +]]> +
      +
      + Getting Web-Services to run on NixOS + ~/usr/basant/src/builder/kitaab-builder/build201118-1522.html + ~/usr/basant/src/builder/kitaab-builder/build201118-1522.html + 2020-11-18 15:22:00 + +%title Getting Web-Services to run on NixOS +:ops:bowl:nix:reflection: +%date 2020-11-18 15:22

      +

      = Summary = +Shaarli

      +
        +
      • Haven't configured a systemd service to ln -s the nix derivation yet
      • +
      +

      Wallabag

      +
        +
      • Upstream seems broken
      • +
      • Docker works, but data is not persistent
      • +
      • Find a way to use overlay so I can use an older version
      • +
      +

      Wireguard

      +
        +
      • broken on 20.09
      • +
      • not sure what to do
      • +
      +

      LUKS / LVM

      +
        +
      • does not mount the big partition
      • +
      • not sure why
      • +
      +

      Borg

      +
        +
      • Unconfigured
      • +
      • Need to restore nextcloud data
      • +
      • Most other data is missing
      • +
      +

      Basically I've learnt that running php web-apps are a nightmare, and that I don't really understand nginx, fastcgi, phpfpm at all really. +For the past ~2 weeks I've been trying to rebuild bowl to be running on NixOS, and I've come up against many difficulties, and lost all the data in both of these services...

      +

      I had issues with getting shaarli to read the environment variable as defined in it's nix derivation. So instead, Timo (the package maintainer) told me another solution is to just ln -s the package directory into somewhere it can read/write to since that's what the environment variable is supposed to do anyway. Once I did this it was easy enough to get Shaarli running. I did have to be careful with the nginx config because I'd accidentally disabled the API. Currently my Shaarli install

      +

      Wallabag has been another story. It seems like upstream is broken because it's overwriting a php function (mb_string is the package and mb_str_replace is the function) that php says it can't overwrite.

      +

      Before I managed to get these to run on bare metal, I was using docker once again to run the services. But since Nix is declarative, and I have no idea how docker volumes work, it wiped everytime I ran nixos-rebuild switch, which remains a problem I haven't quite solved. I somehow managed to get the docker install working, but I don't believe it to be declarative because I did exec into the docker container and ran some esoteric database migration in order to get it to work.

      +

      Further more my main issue currently is that in order to do anything in nixOS I need to be able to write the language, understand the options, and then all the services that the options declaratively define. The way I currently run any of the infrastructure is through googling around and hoping to find a module or someone else trying to run the same software, but more profficient at nixOS than I am. That needs to change, since even for services written in easy to run languages like Go, I can't write the nix file to get them to work.

      +]]> +
      +
      + + ~/usr/basant/src/builder/kitaab-builder/build201118-1520.html + ~/usr/basant/src/builder/kitaab-builder/build201118-1520.html + 2020-11-18 15:20:00 + +%title +:bowl:ops:nix: +%date 2020-11-18 15:20

      +]]> +
      +
      + What I learnt switching bowl to NixOS + ~/usr/basant/src/builder/kitaab-builder/build201108-2359.html + ~/usr/basant/src/builder/kitaab-builder/build201108-2359.html + 2020-11-08 23:59:00 + +%title What I learnt switching bowl to NixOS +:nix:ops:bowl:review: +%date 2020-11-08 23:59

      +

      bowl is on it's last legs. It will only boot after much cajoling. +After many false starts, I finally got it all working. I can't risk switching it off anymore, and I hope it doesn't overheat.

      +

      I created an install.sh script for legacy-bios with encrypted disk and a password, which is very cool +I want one for UEFI now too

      +

      I kept trying to change the names of the logical volumes and volume groups in LVM which is why I was running into issues +I learnt that GRUB 2.06 should contain the necessary patch for LUKS2 (it's been implemented already) +I couldn't figure out how to install shaarli. The package in nixpkgs is just creating the necessary files in /nix/store/-shaarli and I'm not sure how to configure nginx to use that yet. +I managed to install taskd server which has a nixOS wrapper for all the certs and stuff, but haven't got it to sync yet +I've installed nextcloud, but haven't recovered the backup yet.

      +

      I'm still not very confident in my abilities to run a server on nixOS, though this is a good learning opportunity. I don't quite understand all the settings and how to find them, but I've been reading a lot more .nix files which helps.

      +]]> +
      +
      + bowl dying + ~/usr/basant/src/builder/kitaab-builder/build201108-0205.html + ~/usr/basant/src/builder/kitaab-builder/build201108-0205.html + 2020-11-08 02:05:00 + +%title bowl dying +:ops:bowl:hardware: +%date 2020-11-08 02:05

      +

      bowl is certainly nearing teh end of it's life. It has served me well. I will need to replace it imminently.

      +

      I feel so much weaker without it. I need it back now. Currently it will only boot after waiting for around 10 minutes (HDD failure?) and even then the nix installer was flashing error messages (I know the installer works because I booted on a seperate laptop)

      +

      Luckily I have all my data backed up. I was going to wipe it anyway. maybe look into getting a replacement drive to boot off of while I think of what to do in terms of building out a NAS.

      +]]> +
      +
      + Controlled Difficulty + ~/usr/basant/src/builder/kitaab-builder/build201106-0311.html + ~/usr/basant/src/builder/kitaab-builder/build201106-0311.html + 2020-11-06 03:11:00 + +%title Controlled Difficulty +:phil:advice: +%date 2020-11-06 03:11

      +

      Growth requires difficulty. Induce it in your life, in whatever portion you can sustain in order to learn and grow from the experience

      +]]> +
      +
      + 3 Years of Owning a Server + ~/usr/basant/src/builder/kitaab-builder/build201106-0258.html + ~/usr/basant/src/builder/kitaab-builder/build201106-0258.html + 2020-11-06 02:58:00 + +%title 3 Years of Owning a Server +:blog:writing:web: +%date 2020-11-06 02:58

      +

      Once I'd built my first computer (which was actually very late, perhaps sometime in 2016) I needed to figure out what to do with my old one. My old one was a mid-spec laptop from 4+ years prior to that, but it had a decent graphics card at the time that allowed me to play some of the games I'd wanted to -- Though in part the small specs lead me to prefer indie games and roguelikes, the only games I'm even remotely interested anymore. +I figured I'd try and configure it to run as a server. By this point I'd been running exclusively Linux for a couple years and had come across interesting server software. Perenially interested in Privacy and Free Software, I decided to see what I could muster up. +Thus began my on-going experiment with Docker. At the time I knew just enough system adiminstration to be dangerous and hadn't previously set up nginx. Since Docker seemed a lot easier, that's what I went with. +The docker instances I stood up then are the very same images that have been running on my server this entire time, I'm a little ashamed to admit. They're horrible out of date, and basically the only sort of server admin work I did was write scripts so they boot on startup and kick them when they fell down. Being the only one who used this software made that a totally fine solution for me. +Now, I'm trying to level up once again. I've learnt a lot more about server administration, and I'm trying to achieve 201015-2313. The sad part is what stirred me to finally commit to doing this whole process (Backup, Automation and Reliable builds) is losing all the data that I had stored in my bookmarks server since it's inception. That place was a comfy little treasure trove for me I could turn to when I finally needed a tool, book or guide in order to accomplish something. It was a personally curated springboard from which whenever I had an idea, I knew where I should go. It was, in some senses, my Google. Rather than search for something through the public search indexes, I would always choose to search this first. +And now it's gone. And I never want to let that happen again. So here I am in the dead of night checking all my backups before wiping this ancient machine to imbue it with new life and new power. +I hope I don't lose any more data, ever. It's a small step for me, in removing a thorn that has been deeply embedded in my technical prowess. 201106-0311 and all.

      +]]> +
      +
      + vim zettel last 5 edited + ~/usr/basant/src/builder/kitaab-builder/build201105-2338.html + ~/usr/basant/src/builder/kitaab-builder/build201105-2338.html + 2020-11-05 23:38:00 + +%title vim zettel last 5 edited +:idea:contribution:vim:dev: +%date 2020-11-05 23:38

      +

      "Search" and insert the last X edited files. +Because when I'm doing things I create an atomic note for each, but I want to be able to link them later.

      +]]> +
      +
      + Nextcloud Backup + ~/usr/basant/src/builder/kitaab-builder/build201105-2321.html + ~/usr/basant/src/builder/kitaab-builder/build201105-2321.html + 2020-11-05 23:21:00 + +%title Nextcloud Backup +:cli:backup: +%date 2020-11-05 23:21

      +

      Because I'm running a snap I can do: + sudo snap stop nextcloud + sudo cp /var/lib/snap/.. ./ +But because I'm paranoid I also did: + sudo nextcloud.export + sudo cp /var/lib/snap/common/export/* ./

      +]]> +
      +
      + vim zettel Question + ~/usr/basant/src/builder/kitaab-builder/build201105-2316.html + ~/usr/basant/src/builder/kitaab-builder/build201105-2316.html + 2020-11-05 23:16:00 + +%title vim zettel Question +:idea:dev:vim:contribution:question: +%date 2020-11-05 23:16

      +

      How to go back to previous note after ZettelNew?

      +]]> +
      +
      + Docker cp + ~/usr/basant/src/builder/kitaab-builder/build201105-2309.html + ~/usr/basant/src/builder/kitaab-builder/build201105-2309.html + 2020-11-05 23:09:00 + +%title Docker cp +:docker:cli:snip: +%date 2020-11-05 23:09

      +

      docker cp <CONTAINER>:<SRC> <DEST>

      +]]> +
      +
      + Wallabag Backup + ~/usr/basant/src/builder/kitaab-builder/build201105-2306.html + ~/usr/basant/src/builder/kitaab-builder/build201105-2306.html + 2020-11-05 23:06:00 + +%title Wallabag Backup +:puralek:cli:sql:backup: +%date 2020-11-05 23:06

      +

      Had to enter the docker container +Go to a reasonable place in the filesystem +Run + psql -U postrges -l + pg_dump -U postgres $database > outfile +Then copy out of docker + sudo docker cp wallabag-db:/$database wallabag

      +]]> +
      +
      + Borg instructions + ~/usr/basant/src/builder/kitaab-builder/build201105-2104.html + ~/usr/basant/src/builder/kitaab-builder/build201105-2104.html + 2020-11-05 21:04:00 + +%title Borg instructions +:tools:cli: +%date 2020-11-05 21:04

      +

      = Install & Quick Start = +pip3 install borgbackup +borg init -e=none /path/to/repo +borg create /path/to/repo::Wallabag /var/lib/docker/volumes/x/data

      +]]> +
      +
      + Desk Companion + ~/usr/basant/src/builder/kitaab-builder/build201105-2043.html + ~/usr/basant/src/builder/kitaab-builder/build201105-2043.html + 2020-11-05 20:43:00 + +%title Desk Companion +:hardware:craft: +%date 2020-11-05 20:43

      +

      I want a little desk companion out of my RPi 0. It needs a (e-ink) screen, some batteries, and a (hand crafted) wooden holder.

      +

      I'm not sure what to make it display += Ideas =

      +
        +
      • Weather Calendar Tasks (Dashboard)
      • +
      • Different plants and their information
      • +
      • Tamogatchi
      • +
      • Pomodoro Timer
      • +
      +]]> +
      +
      + The New Internet is being born + ~/usr/basant/src/builder/kitaab-builder/build201105-1945.html + ~/usr/basant/src/builder/kitaab-builder/build201105-1945.html + 2020-11-05 19:45:00 + +%title The New Internet is being born +:blog:web:notes: +%date 2020-11-05 19:45

      +

      I've read many articles about the Old Internet being dead (those that write those articles seem implicitly aware that the "Now Internet" sucks) +I have a different take. The New Internet is taking root. If you know where to look you can smell the trees.

      +

      Something similar is the "Cozy Web". You probably have carved out your own cozy web too. "Private" groups filled with your friends. Things that you share with select group(s) and (generally) the corporations that provide that service. Messenger, Telegram, Slack, Discord, $X DMs, Snapchat, Zoom. Maybe you're down with technology or blessed by the Priesthood of Programmers and know someone that runs their own infrastructure, which is certainly much comfier as far as I'm concerned. Whatever it may be, the important factor in the Cozy web is that it's ▓▓▘▙▕▛▟▘▙.

      +

      The New Internet must happen in public by definition. It's already taking shape. Digital Gardens or Online Personal Notebooks. Some small blogs. IndieWeb. There's (generally) nothing to sell, no obligation to buy. They are welcoming spaces filled with personal expression. Many are just electronic Business Cards, some are dense tome's of intently researched knowledge. Some are Parks and some are Libraries. There are still certainly stalls and small businesses too. But there's no Amazon. No endless trackers. No enmourous data centres. Well, at least in my dreams

      +

      The tools obviously still need work. Creating and designing a website is not an easy task. Ensuring that it stays running is an ongoing obligation. Most people still don't know about hyper://, ipfs://, or gemini:// hell Google is getting rid of http://! Yet even the alternatives have requirements beyond simply knowing them. Technical skills to use them, resources to have a constantly running computer, dedicated internet and electricity. So even if you can build websites, why would you choose this unknown alternative with all these related problems when you can just pay someone to deal with it.

      +

      But it is possible. Community oriented services. Public and Personal spaces wrapped in one. I'm trying to build my own Public Personal space here too. Working with the garage door up.

      +]]> +
      +
      + On Noticing Your Own Reactions + ~/usr/basant/src/builder/kitaab-builder/build201105-1933.html + ~/usr/basant/src/builder/kitaab-builder/build201105-1933.html + 2020-11-05 19:33:00 + +%title On Noticing Your Own Reactions +:writing:phil: +%date 2020-11-05 19:33

      +

      By paying attention to how you feel, one begins to learn many things. One of these is the distinction between like and dislike. One can learn valuable information about oneself by noticing when we like and dislike things. This too is a spectrum, but nonethelss it can be distinguished at ends. Like and dislike. We learn to do more of what we enjoyed, obviously. We also learn an important lesson from what we dislike. We shouldn't learn the opposite lesson though: To turn away and do less of what we don't like. Instead, our goal should be to understand why. What part of ourselves are we afraid of that we experience fear of experiences. Instead we should seek to understand our discomfort and engage with it. Learn from it. That cannot happen if it is discarded. So look at it, don't through away your own reactions. Even if it is a bad reaction. Seek to introduce it into your life in the smallest manner you can handle. And work from there. +Heavy storms make deep roots.

      +]]> +
      +
      + kendrit-ops + ~/usr/basant/src/builder/kitaab-builder/build201103-2109.html + ~/usr/basant/src/builder/kitaab-builder/build201103-2109.html + 2020-11-03 21:09:00 + +%title kendrit-ops +:kendrit:ops: +%date 2020-11-03 21:09

      +

      New Kendrit, hopefully this one goes better. +Intimately related to the previous Kendrit, but not quite so focused on HPI as general ops regarding my infrastructure as it seems to have been falling down a lot lately.

      +

      Trying to have fewer tasks that are more important.

      +

      = Goals =

      +
        +
      • Get nixOS on bowl
      • +
      • Weekly and Monthly backups of bowl
          +
        • using Borg and Blackblaze
        • +
        +
      • +
      • Wiregaurd installation on helix to access bowl from anywhere
      • +
      • Update keyboard keymap
      • +
      +]]> +
      +
      + Kendrit Puralek Review + ~/usr/basant/src/builder/kitaab-builder/build201101-2014.html + ~/usr/basant/src/builder/kitaab-builder/build201101-2014.html + 2020-11-01 20:14:00 + +%title Kendrit Puralek Review +:kendrit:puralek:review: +%date 2020-11-01 20:14

      +

      Honestly, this kendrit was sort of a failure. I had a large list of things I wanted to do and didn't really do any of them. It's a little upsetting. +I'm not sure if this can be totally blamed on the Kendrit model yet, as this was a period that was notoriously bad for my sleep, leaving me drained of any useful energy before work let alone after.

      +

      I recorded the list of items I didn't complete for future reference below

      +

      = tasks =

      +
        +
      • set auto upload for pictures
      • +
      • habits -> Kitaab
      • +
      • Shaarli ▕░░▔▞▖▗ -> MAM
      • +
      • Shaarli ▕▝▟▛▘▙▟ -> Headphones
      • +
      • grasp running through systemd
      • +
      • new file for each grasp
      • +
      • grasp templates with & escape
      • +
      • import tiddlywiki into kitaab
      • +
      • telegram2rss
      • +
      • huginn
      • +
      • Kobo annotations -> Kitaab
      • +
      • Wallabag annotations -> Kitaab
      • +
      • Shaarli -> Kitaab
      • +
      • install nixos bowl
      • +
      • back up data to borg
      • +
      • set up a template/snippet for gratitude and review jrnl entries
      • +
      • pull spellbook scripts from homeschick
      • +
      +]]> +
      +
      + Kitaab integration with Task Warrior + ~/usr/basant/src/builder/kitaab-builder/build201031-0114.html + ~/usr/basant/src/builder/kitaab-builder/build201031-0114.html + 2020-10-31 01:14:00 + +%title Kitaab integration with Task Warrior +:dev:meta:kitaab:taskwiki:python: +%date 2020-10-31 01:14

      +

      Link text to Task warrior tasks in Kitaab. Maybe there is a description element for tasks in the wiki, or perhaps write a way to refer to specific tasks in Kitaab.

      +]]> +
      +
      + Scratch Bar + ~/usr/basant/src/builder/kitaab-builder/build201031-0111.html + ~/usr/basant/src/builder/kitaab-builder/build201031-0111.html + 2020-10-31 01:11:00 + +%title Scratch Bar +:place:people:strangers: +%date 2020-10-31 01:11

      +

      We met Graham at the bar. Big long beard, really nice guy. He serves drinks.

      +]]> +
      +
      + Systems, not Goals + ~/usr/basant/src/builder/kitaab-builder/build201031-0042.html + ~/usr/basant/src/builder/kitaab-builder/build201031-0042.html + 2020-10-31 00:42:00 + +%title Systems, not Goals +:writing:phil:way: +%date 2020-10-31 00:42

      +

      One of the founding principles by which I organize my life (at least rn). It's not a difficult concept. Implementing it is always personal though. Everybody has their own desired consequences that they solve in their own ways. It's part of what makes people beautiful.

      +

      What I mean by this is primarily that goals are ephmeral. Once achieved they vanish, as though that is the end of the problem, or action, or even outcome. The heroes journey is always cyclical. There are no level ups in real life, you continue with the tools you've delevoped. So build tools.

      +

      Architect systems of processes such that you can achieve your "goals" reliably, consistently. If a goal is of any value, in most cases it is worth repeating; better. So don't worry about how far you've come, just keep journey-ing. Embrace your ability to instantiate change. Create! Destroy! You are the opponent of Entropy! You cannot win, but at least enjoy the battle.

      +

      You get the idea.

      +

      "What is the purpose of dance?" - Alan Watts

      +]]> +
      +
      + readImap dvlg + ~/usr/basant/src/builder/kitaab-builder/build201025-2352.html + ~/usr/basant/src/builder/kitaab-builder/build201025-2352.html + 2020-10-25 23:52:00 + +%title readImap dvlg +:dvlg:dev:readImap:kendrit:puralek: +%date 2020-10-25 23:52

      +

      = tasks | pro:readImap =

      +
        +
      • [X] finish read-imap in spellbook #b4a148e7
          +
        • [X] parse email msgs #0e629167
        • +
        +
      • +
      • [X] import writing into kitaab #ea0f2f4d
      • +
      +

      = done = +download emails using email and imaplib in python +save to out file using email.generator.Generator(fp) +can read file through emails through email.parser.Parser(fp)

      +

      = parsing = +for part in msg.walk(): +r = str(part.get_payload(decode=True))

      +

      = todo =

      +
        +
      • avoid bytes and empty parts
      • +
      • differentiate between links and passages/comments
      • +
      • read tags from identified link blocks
      • +
      • average links per day
      • +
      • most common tag
      • +
      +]]> +
      +
      + Why Kendrit + ~/usr/basant/src/builder/kitaab-builder/build201021-2233.html + ~/usr/basant/src/builder/kitaab-builder/build201021-2233.html + 2020-10-21 22:33:00 + +%title Why Kendrit +:writing:kendrit: +%date 2020-10-21 22:33

      +

      I bounce from project to project so much because there is a lot I want to do. This often leads to thrashing and not actually doing anything. So in order to Get Things Done™ I needed a way to focus on larger goals over longer periods of time. Hence Kendrit, literally translated as "To Center".

      +]]> +
      +
      + Jrnl Index + ~/usr/basant/src/builder/kitaab-builder/build201021-2102.html + ~/usr/basant/src/builder/kitaab-builder/build201021-2102.html + 2020-10-21 21:02:00 + +%title Jrnl Index +:jrnl:index: +%date 2020-10-21 21:02

      +

      = Generated Tags =

      +

      == jrnl ==

      + +]]> +
      +
      + Somewhere at the end of History + ~/usr/basant/src/builder/kitaab-builder/build201021-2043.html + ~/usr/basant/src/builder/kitaab-builder/build201021-2043.html + 2020-10-21 20:43:00 + +%title Somewhere at the end of History +:writing:story: +%date 2020-10-21 20:43

      +

      History was already over, but there aren't any endings. There never really were. Tomorrow always beckons, and things inevitably continue to happen. That's where I found myself. Just, happening at the end of history. With no reference to point to, I couldn't tell you what was different. Not even if I wanted to. Anyway, I'm sure you've done enough of this existing thing yourself to figure it out. Things were. How else do I describe it? Existence is. Even at the end of history. There isn't any other way to put it, not now, not before, and certainly not after. Look, look how our language became antiquated. Especially now it is illequiped to describe my time. For even though I can speak of before and now and after, there isn't really any. Distinction I mean. Now was now and will continue to be now, not before, not after. +And yet, if history is the chronicalling of time, haven't I just contributed a piece?

      +]]> +
      +
      + Amazed at the NixOS Community + ~/usr/basant/src/builder/kitaab-builder/build201020-1926.html + ~/usr/basant/src/builder/kitaab-builder/build201020-1926.html + 2020-10-20 19:26:00 + +%title Amazed at the NixOS Community +:writing:nix:micro:blog: +%date 2020-10-20 19:26

      +

      Even by FOSS zealot standards, I run an esoteric combination of hardware and software. My interests go beyond just "getting things done"; I have a strange fascination with tools themselves. I specifically choose tools I can customize to fit my hand like glove, and the FOSS world has plenty of choices for those so inclined. +This obsession with obscurity means I end up playing with software that looks like an ASCII video game, but is actually a music tracker, emulates modular synthesizers or is a DSL in an already esoteric programming language for livecoding +Even when it comes to hardware, I use a phone you probably haven't heard of (it has a physical keyboard! in 2020!), and my smartwatch is literally no longer available for purchase, that I revived through a battery transplant.

      +

      And yet, the NixOS community has packages for all of these. There's a derivation of the Pebble SDK, TidalCycles and VCV-Rack. It's awesome. Even though they don't natively package all the vim plugins I'm using, I've gotten the hang of updating nixpkgs to include these plugins, and I've even made a couple PRs so they are available to the wider community! I didn't think the intersection between FOSS zealots who use NixOS, like livecoding or are die-hard Pebble fans would be greater than 1, but here I am😊

      +]]> +
      +
      + Kimchi Batch 2 + ~/usr/basant/src/builder/kitaab-builder/build201019-2221.html + ~/usr/basant/src/builder/kitaab-builder/build201019-2221.html + 2020-10-19 22:21:00 + +%title Kimchi Batch 2 +:ferment:experiment: +%date 2020-10-19 22:21

      +

      = Spices = +1 cup gochugaru +1 half white onion +whole head of garlic +a chunk of ginger +2 Shallots, thinly sliced

      +]]> +
      +
      + Pebble Battery Replacement + ~/usr/basant/src/builder/kitaab-builder/build201019-2220.html + ~/usr/basant/src/builder/kitaab-builder/build201019-2220.html + 2020-10-19 22:20:00 + +%title Pebble Battery Replacement +:link:pebble:hardware: +%date 2020-10-19 22:20

      +

      This website https://pebblejunkies.com/how_to-s.html has useful links

      +]]> +
      +
      + Alert when nixpkgs unstable is unavailable + ~/usr/basant/src/builder/kitaab-builder/build201019-2038.html + ~/usr/basant/src/builder/kitaab-builder/build201019-2038.html + 2020-10-19 20:38:00 + +%title Alert when nixpkgs unstable is unavailable +:bot:dev:nix: +%date 2020-10-19 20:38

      +]]> +
      +
      + Buchi Flavors + ~/usr/basant/src/builder/kitaab-builder/build201019-2020.html + ~/usr/basant/src/builder/kitaab-builder/build201019-2020.html + 2020-10-19 20:20:00 + +%title Buchi Flavors +:recipe:fermentation:buchi: +%date 2020-10-19 20:20

      +

      == 14/10/20 5th Batch == += Blueberry cream = +Same as before

      +

      = Mango + Pear = + 1 mango + 2 pear blitzed (only a lil added)

      +

      = Straw + Lime = +Blitzed strawberry 250g +Juice of some lime

      +

      = Pear + Apple x2 = +Blitzed pear (Only buy 1 of these!) +Blitzed apple (Only buy 1 of these!) +Some lime juice

      +

      = flavors ideas = +lime + mint +lime + ginger +vanilla, banana, blueberry, cinnamon, peach, basically any fruits +look into heating flavors, adding sugar before 2nd ferment

      +

      = 21/09/20 4th batch = += Blueberry cream = +Blue bottle +same as below

      +

      = Tropical blast = +Red bottle +250g strawberry

      +
        +
      • half chopped
      • +
      • half crushed and heated +half a pineapple, chopped +some lemon +some lime +some blueberry
      • +
      +

      = Pineapple + passionfruit + lime = +Green bottle +quart a pineapple, blitzed +2 passionfruits +juice of 2 limes

      +

      = Kiwi + Lemon = +Blue bottle +3 kiwis, blitz +juice of 1 lemon

      +

      = Pineapple swirl = +quart a pineapple, blitzed +some kiwi +some lemon +some lime

      +

      = 23/08/20 3rd batch = += Blueberry Cream = +230g blueberry + turned into jam + heated with 1 cup water + crushed + a little sugar + 1 cap vanilla extract +3rd full batch

      +

      = Strawberry Cream = +250g strawberry + turned into jam + same steps as blueberry +3rd full batch

      +

      = Lemon Mint Musk = +3 full limes from jj +5 fresh mint leaves +half a pack dried mint +3rd full batch

      +

      = Banana Cream = +2 full bananas +1 cap vanilla extract +3rd full batch

      +

      = 3rd batch first stage 09/08/20 = +Madura organic green tea +All boxed water

      +

      = Review of 22/07 batch = +all undrinkably sour, should have re-made from the first stage

      +

      = Strawberry 22/07/20 = +~500g strawberry, chopped +about 1/3rd bottle +Diluted water batch

      +

      = Citrus 22/07/20 = +Oca/Orange blend +Half a large orange +3 chopped Ocas +Diluted water batch

      +

      = Orange OG 22/07/20 = +Ginger/Tumeric/Orange blend +Half a large orange +Diced ginger + tumeric 50/50 +about a 1/4th of the bottle +Diluted water batch

      +

      = The OG 12/07/20 = +Tumeric/Ginger blend +Diced, roughly 50/50 +About 1/4th the bottle

      +

      = Berry Buch 12/07/20 = +Strawberry + Blueberry blend +250g strawberry, diced +125g blueberries smushed +Around 1/3rd of the bottle

      +

      = Spiced Fruit 12/07/20 = +Strawberry, Pomogranite, Blueberry and Ginger +200g strawberry, diced +100g blueberry, smushed +1 pomogranite, sorta smushed +a teaspoon of ginger, diced and smushed +About 1/3rd of a small bottle

      +]]> +
      +
      + NixOS Quick Tips + ~/usr/basant/src/builder/kitaab-builder/build201019-1905.html + ~/usr/basant/src/builder/kitaab-builder/build201019-1905.html + 2020-10-19 19:05:00 + +%title NixOS Quick Tips +:nix:dev:ops: +%date 2020-10-19 19:05

      +

      install a package: +nix-env -i hello <-- not reproducible and hence not advisable + or
      +edit /etc/nixos/configuration.nix to ensure system wide install +nixos-rebuild switch <-- create new generation +nixos-rebuild test <-- only active while computer on

      +

      sudo nixos-rebuild test -I nixpkgs=~/usr/nixpkgs/ + ^-- use local repo to build pkgs

      +

      find out where in the store a binary is: +readlink -f $(which hello)

      +

      search packages +nix-env -qaP '.*hello.*' + or +nix search <pkg>

      +

      search nix package options +nixos-option <option>

      +

      clear up space: +nix-collect-garbage -d

      +

      upgrade to new channel: +nix-channel --list # show what version we're on +nix-channel --add https://nixos.org/channels/nixos-XX.XX nixos +nix-channel --update +nixos-rebuild switch

      +

      use a package through nix-shell: +nix-shell -p <package>

      +

      list generations +nix-env --list-generations

      +

      list installed packages +nixos-option environment.systemPackages + or +nix-env --query

      +

      install a nixOS .nix file through nix package manager +nix-env -f nvim.nix -i neovim

      +]]> +
      +
      + Memory Usage on cube + ~/usr/basant/src/builder/kitaab-builder/build201018-2304.html + ~/usr/basant/src/builder/kitaab-builder/build201018-2304.html + 2020-10-18 23:04:00 + +%title Memory Usage on cube +:ops:cube: +%date 2020-10-18 23:04

      +

      When I logged in, checking htop didn't reveal that gitea was running out of memory. it was sitting around 250mb of usage, well within what is available.

      +

      Restarting gitea, disabling hypercore and dat because they're broken and old has resolved the current problem

      +]]> +
      +
      + Linux Debugging + ~/usr/basant/src/builder/kitaab-builder/build201018-2232.html + ~/usr/basant/src/builder/kitaab-builder/build201018-2232.html + 2020-10-18 22:32:00 + +%title Linux Debugging +:ops:cli: +%date 2020-10-18 22:32

      +

      = Posix =

      +
        +
      • /etc/ stores a list of config files for the software you have installed
      • +
      • We can determine most log file locations, from config files
      • +
      +

      = Systemd =

      +
        +
      • /etc/systemd/system shows you all the system services running
      • +
      +]]> +
      +
      + The God Pebble + ~/usr/basant/src/builder/kitaab-builder/build201018-2147.html + ~/usr/basant/src/builder/kitaab-builder/build201018-2147.html + 2020-10-18 21:47:00 + +%title The God Pebble +:pebble:craft:dot: +%date 2020-10-18 21:47

      +

      Endgame:

      +
        +
      • waterproof
          +
        • Suguru sealed
        • +
        • O-capped buttons (not sure if possible)
        • +
        +
      • +
      • Sapphire glass (polarized?)
      • +
      • HR Smart Strop
      • +
      • Higher battery capacity
      • +
      • NFC Payments
      • +
      • Take calls through the microphone
      • +
      +]]> +
      +
      + Replacement Glass + ~/usr/basant/src/builder/kitaab-builder/build201018-2141.html + ~/usr/basant/src/builder/kitaab-builder/build201018-2141.html + 2020-10-18 21:41:00 + +%title Replacement Glass +:pebble:dot: +%date 2020-10-18 21:41

      +

      Need a 35.5mm width and 0.5mm thickness sapphire glass replacement. +Will probably need 1mm take to secure it back to the I-ring +Alternatively Suguru could work

      +]]> +
      +
      + voiceNote + ~/usr/basant/src/builder/kitaab-builder/build201018-2128.html + ~/usr/basant/src/builder/kitaab-builder/build201018-2128.html + 2020-10-18 21:28:00 + +%title voiceNote +:dev:pebble: +%date 2020-10-18 21:28

      +

      A VoiceNote application that creates a new text note with the title and rest of the dictation to your phone as a txt file saved wherever you want it, optionally through some template.

      +

      This is going to need:

      +
        +
      • Transcription API calls
      • +
      • Sending data to phone
      • +
      • Handling the data once on the phone (companion app?)
      • +
      +

      Some useful links:

      + +]]> +
      +
      + Taskwarrior Android Changes + ~/usr/basant/src/builder/kitaab-builder/build201017-1546.html + ~/usr/basant/src/builder/kitaab-builder/build201017-1546.html + 2020-10-17 15:46:00 + +%title Taskwarrior Android Changes +:dev:PR:idea:android: +%date 2020-10-17 15:46

      +

      Instead of reports showing various different taskwarrior reports, have it show by project and be configurable

      +]]> +
      +
      + Invincible Computing + ~/usr/basant/src/builder/kitaab-builder/build201015-2313.html + ~/usr/basant/src/builder/kitaab-builder/build201015-2313.html + 2020-10-15 23:13:00 + +%title Invincible Computing +:writing:punya: +%date 2020-10-15 23:13

      +

      Computers are fragile things. Data is lost, for either hardware or software reasons. Software goes out of date, hardware becomes obsolete. +Why do we put up with this? +I want to be able to point any computer that I rightfully have ownership of, point it to a server of mine, and be jacked right back into my setup.

      +

      As a developer and enthusiast I refuse to have to configure my tools over and over again. I learn them deeply and set them up to be exactly how I want. +But I should only go through that process once. And just like the hammer of Thor, I should be able to summon them from anywhere. +That is the goal.

      +]]> +
      +
      + Travel + ~/usr/basant/src/builder/kitaab-builder/build201015-2306a.html + ~/usr/basant/src/builder/kitaab-builder/build201015-2306a.html + 2020-10-15 23:06:00 + +%title Travel +:travel: +%date 2020-10-15 23:06

      +

      Adventures in exploration

      + +]]> +
      +
      + Archive pirate data + ~/usr/basant/src/builder/kitaab-builder/build201015-2239.html + ~/usr/basant/src/builder/kitaab-builder/build201015-2239.html + 2020-10-15 22:39:00 + +%title Archive pirate data +:▔▕▛▐▛▖▗▐:pirate: +%date 2020-10-15 22:39

      +

      = Status =

      +
        +
      • Jackett hooked up to redacted
      • +
      • Lidarr doesnt seems to connect to transmission on tri
      • +
      • Lidarr does connect to Jackett on bowl
      • +
      • Lidarr does not need a local list if q0x3f@geryon.feralhosting.com:~/scripts/music-pull works well
      • +
      • sshfs configured to tv-seed and music-seed, needs to be initialized on boot/permanent??
      • +
      • not sure how the lidarr/▘▙▔▚▖▗▜▟ import into kodi/airsonic works
      • +
      • ▒▞▕▞▒▓ not working
      • +
      +

      = Notes =

      +
        +
      • need to configure ▖▗▓▜▓▚▛, bowl tv mnt points to share to kodi
      • +
      • need to find a way smarter way to grab files, eventually i'll need to clear music-seed without redownloading all of it. perhaps store the list of already grabbed folders and diff with remote
      • +
      • notification for beet failures, with beet running in a tmux screen
      • +
      • configure cron for startup on these services (currently sitting tmux screen 1)
      • +
      • mono installed
      • +
      +

      = even older =

      + +

      Seems Lidarr and Radarr both require me to point them at my current collection and have the downloader be remote. this isn't such a big problem as I can just install them on my laptop, and run them over localhost, no proxy necessary. i can keep jackett installed remotely and use that as the converter. this should hopefully make it easier to keep my libraries intact as well.

      +]]> +
      +
      + Services + ~/usr/basant/src/builder/kitaab-builder/build201015-2229.html + ~/usr/basant/src/builder/kitaab-builder/build201015-2229.html + 2020-10-15 22:29:00 + +%title Services +:ops:software: +%date 2020-10-15 22:29

      +

      = Digital Infrastructure =

      +
        +
      • nextcloud (bowl)
          +
        • files
            +
          • calendar
          • +
          • photos
          • +
          +
        • +
        +
      • +
      • airsonic (bowl)
      • +
      • wallabag (bowl)
      • +
      • taskwarrior (bowl)
      • +
      • gitea (cube)
          +
        • passwords
        • +
        +
      • +
      • blog (cube)
      • +
      • rss reader (feedbin.com)
      • +
      • Mastodon (hackers.town / merveilles.town)
      • +
      • Scuttlebutt (line / curve / box)
      • +
      • Habits (line)
      • +
      • Fava + Beancount (finances)
      • +
      • Syncthing
          +
        • this notebook
        • +
        • tiddlyWiki
        • +
        • drawing
        • +
        +
      • +
      • Telegram, Wire, Whatsapp, Signal, Matrix
      • +
      • Slack / Discord
      • +
      • AlgoVPN / wireguard
      • +
      • OSMAnd
      • +
      +

      = Less used =

      +
        +
      • Anki
      • +
      • Duolingo
      • +
      +]]> +
      +
      + kendrit-puralek + ~/usr/basant/src/builder/kitaab-builder/build201015-2222.html + ~/usr/basant/src/builder/kitaab-builder/build201015-2222.html + 2020-10-15 22:22:00 + +%title kendrit-puralek +:kendrit:puralek: +%date 2020-10-15 22:22

      +

      201101-2014

      +

      = Goals =

      +
        +
      • HPI interface
          +
        • Automation to grab stuff from various services and have it be accessible ideally through commandline
        • +
        • Ability to add to Kitaab through Puralek
        • +
        +
      • +
      • Borg backup running continously
      • +
      • Ensure that grasp is running through nixOS +
      • +
      • bowl running on nixOS with all HDDs attached OR a replacement for bowl
      • +
      • Integrate all the old stuff that is in cold storage and make it accessible
      • +
      • Integrate stuff that is currently android only into Puralek
          +
        • Habits
        • +
        +
      • +
      • Taskwarrior + Calendar integration
      • +
      • build a startpage that features random things from Puralek
          +
        • album
        • +
        • article
        • +
        • kitaab page
        • +
        • rss feed?
        • +
        • quote
        • +
        • story?
        • +
        +
      • +
      • lifeTracker integration
          +
        • finances
        • +
        • location
        • +
        • browser history
        • +
        • sleep
        • +
        • media consumption
        • +
        +
      • +
      +]]> +
      +
      + Vim Kendrit Review + ~/usr/basant/src/builder/kitaab-builder/build201015-2153.html + ~/usr/basant/src/builder/kitaab-builder/build201015-2153.html + 2020-10-15 21:53:00 + +%title Vim Kendrit Review +:kendrit:vim:review: +%date 2020-10-15 21:53

      +

      So today marks the end of my vim kendrit. As always I'm wishing I did better at it, but I have a habit of setting aspirational goals. I like the two week format, given that this was the first one I did. While I didn't exclusively focus on Vim stuff, that was'nt my intention, and just having this kendrit set gave me a direction to turn to when I was not sure about what to focus on. I liked that. I also feel like I am at least a bit better at vim now. I made a contribution to vimwiki-sync to ensure that it runs on NeoVim too, and that's something! I've never had an PR be included before 😊 It felt really good to have finally contributed to an open source project and have it accepted. I also picked up on a few things that I'd be meaning to learn for a while, but I'm not yet fluent at them. I think if there's something I should improve on for Kendrit's it's writing stuff down more. That was a big help, but also I had to go through the source material a few times before I realized I really needed to write things down.

      +

      I hadn't thought of this before, but this does impact my ability to do dev hack generative stuff. Though I suppose to be fair I hadn't really been doing that for a while now. Perhaps I could find a way to incorporate that into my Kendrits.

      +]]> +
      +
      + Idea behind Puralek + ~/usr/basant/src/builder/kitaab-builder/build201013-2207.html + ~/usr/basant/src/builder/kitaab-builder/build201013-2207.html + 2020-10-13 22:07:00 + +%title Idea behind Puralek +:puralek:writing: +%date 2020-10-13 22:07

      +

      i realized that this is about organizing information, but thats also literally the purpose of the data involved in creating kitaab. its important to remember to distinguish between the mix of meta data and data held in this "book" and all the data that is produced in using computers. however the organization principles apply to both. hence i am starting to use this more like a log of all things. in doing so, the idea of Puralek and Kitaab become inextriabcly intertwined and must be synthesized into something more

      +

      this struck me during the reordering of /now and seeing now listed down there as an intergration idea makes sense, but not the scope i originally thought.

      +

      use /now to order the index page of Kitaab +some sort of averaging between total itetms and change in items

      +

      = Integration ideas = +generate a calendar that updates over nextcloud through task warrior events +Be able to link the Tasks list from a specific directory into the /now page +automation based on the above tags idea: feedreader > star > based on content action (add to jackett for music, save to images for image, etc) and have a living orgamism of information

      +]]> +
      +
      + Flows for HPI + ~/usr/basant/src/builder/kitaab-builder/build201013-2206.html + ~/usr/basant/src/builder/kitaab-builder/build201013-2206.html + 2020-10-13 22:06:00 + +%title Flows for HPI +:puralek: +%date 2020-10-13 22:06

      +

      = flows = +shaarli (▟▓▟▚▖▗▜/▜▒▔/▓▞▚░▚▘▙) -> ▝▛▐▔▐▔/▟░▘▙▐░▟/▚▓▔▘▙▝▐▓▒▓▚ +~~ email (links) -> shaarli ~~ +telegram chanel -> rss +telegram self messages -> ?? +rss stars -> Blog +telegram messages more than 5 years old -> archive +firefox tab groups -> sync (i think this syncs), files +~~ are.na -> shaarli (read-imap) ~~ +slack music -> shaarli?

      +

      theStudio -> Shaarli

      +

      ~~ gnome-pomodoro -> time tracker -> newpage ~~ +uHabits -> habit-server -> habitsGtk / dijo +Kitaab -> Blog +Wallabag -> Annotations +Kobo -> Annotations +merveilles.town -> Notes

      +

      take media and throw it in shaarli

      +]]> +
      +
      + Bowl to NixOS Migration + ~/usr/basant/src/builder/kitaab-builder/build201013-2144.html + ~/usr/basant/src/builder/kitaab-builder/build201013-2144.html + 2020-10-13 21:44:00 + +%title Bowl to NixOS Migration +:puralek:bowl: +%date 2020-10-13 21:44

      +

      Wish to migrate all the services on bowl to nixOS from Ubuntu +As part of Puralek +Necessary in order to add wireguard

      +

      = Services =

      +
        +
      • VPN -> Wireguard
      • +
      • AirSonic
      • +
      • Nextcloud
          +
        • Contacts
        • +
        • Calendar
        • +
        • Files
            +
          • Pictures
          • +
          +
        • +
        • GpxPod
        • +
        +
      • +
      • TaskWarrior
      • +
      • Wallabag
      • +
      • Shaarli
      • +
      • NFS share (TV/Movies)
      • +
      • Headphones/Lidarr/Sonarr ▒▚▝▐▐░
      • +
      • beancount + fava (finances)
      • +
      +]]> +
      +
      + HDD Catalouge + ~/usr/basant/src/builder/kitaab-builder/build201013-2143.html + ~/usr/basant/src/builder/kitaab-builder/build201013-2143.html + 2020-10-13 21:43:00 + +%title HDD Catalouge +:puralek:backup: +%date 2020-10-13 21:43

      +

      Silver -> Memories + Nostalgia +Black -> +Mother of all HDD -> Music +Big Black -> Movies + TV

      +]]> +
      +
      + taskwiki fix + ~/usr/basant/src/builder/kitaab-builder/build201006-2310.html + ~/usr/basant/src/builder/kitaab-builder/build201006-2310.html + 2020-10-06 23:10:00 + +%title taskwiki fix +:meta:dev: +%date 2020-10-06 23:10

      +

      currently taskwiki is broken because it requires a new version of tasklib (2.2.1) +tasklib is in nixpkgs/pkgs/development/python-modules/taskwiki +I need to change the sha256 hash to update to the new version

      +]]> +
      +
      + MAMGrab + ~/usr/basant/src/builder/kitaab-builder/build201004-2232.html + ~/usr/basant/src/builder/kitaab-builder/build201004-2232.html + 2020-10-04 22:32:00 + +%title MAMGrab +:dev:pirate: +%date 2020-10-04 22:32

      +

      Python script to grab .torrent files from MAM's API (https://www.myanonamouse.net/api/endpoint.php/1/tor/js/loadSearchJSONbasic.php )

      +]]> +
      +
      + Keyboard changes + ~/usr/basant/src/builder/kitaab-builder/build201003-1607.html + ~/usr/basant/src/builder/kitaab-builder/build201003-1607.html + 2020-10-03 16:07:00 + +%title Keyboard changes +:ops: +%date 2020-10-03 16:07

      +

      Add backtick

      +]]> +
      +
      + My journey with Linux + ~/usr/basant/src/builder/kitaab-builder/build201001-1949.html + ~/usr/basant/src/builder/kitaab-builder/build201001-1949.html + 2020-10-01 19:49:00 + +%title My journey with Linux +:blog:writing: +%date 2020-10-01 19:49

      +

      Started out experimenting with VMs in high school (2013) + never got very far (dont think i actually got an install working) +get sick of windows slowing down my laptop in college (2015?) +decide to install Arch to bootloader because I'm hardcore (and was on break from school) +try many times to get it installed +get it working, install WM only -- bspwm was trendy at the time +learn shell, git, vim because all the r/unixporn and /g/ desktop threads were doing that +learn about AUR +keep forgetting to run pacman -Syu and then when I do it breaks my computer +get sick of that and install debian net-install +continue running bspwm +become indoctrinated into the FOSS zealotry +continue with debian net-install, bspwm, vim -> happy with my setup +... +buy a chromebook for uni (2016) +install xfce on it because compiling on chromebook was wack +... +buy a desktop (2017) +use similar setup to original laptop +turn laptop into server +start learning about self hosting foss shit to make my life better +... +but have to do uni shit +buy librem13v3 (2019) +get sick of having to do everything by hand on desktop and switch to mostly using laptop +laptop keyboard sucks though (using ErgoDox EZ on desktop) +learn about nixOS +install it on everythinig so I don't have to keep recreating setups.

      +]]> +
      +
      + Vim tricks + ~/usr/basant/src/builder/kitaab-builder/build201001-1906.html + ~/usr/basant/src/builder/kitaab-builder/build201001-1906.html + 2020-10-01 19:06:00 + +%title Vim tricks +:kendrit:vim: +%date 2020-10-01 19:06

      +

      Screen: H (top of screen), M (middle of screen), L (bottom of screen)

      +

      taken from: https://missing.csail.mit.edu/2020/editors/

      +]]> +
      +
      + Why have an HPI? + ~/usr/basant/src/builder/kitaab-builder/build200930-2319.html + ~/usr/basant/src/builder/kitaab-builder/build200930-2319.html + 2020-09-30 23:19:00 + +%title Why have an HPI? +:puralek:writing: +%date 2020-09-30 23:19

      +

      story: + when thinking about how to view and save and store data such that it makes the most sense, having an interface that classifies arbitrarily tagged data (podcasts, files, rss feeds, etc etc) to show the content you're looking for sounds interesting. Having the same set of tags across all the formats seems like a good place to start this endeavour but I fear this may be not concrete enough to work with yet

      +

      A collection of my raw data from the past that should be organized. A curation of the media ive enjoyed, my creative endeavours and things that i saved. Ultimately aims to be a museum of me to help me understand myself. how can a museum also be living though? my computer is a delicate dance atop the terminal, how could it be static?

      +

      The problem is that my information is scattered, unindexed, and of an unknown quality +This goes beyond just collecting data, but using a collection of data to create new tools to interact with it. Formatting and organising my own information so that it's accessible to learn from

      +]]> +
      +
      + Flows + ~/usr/basant/src/builder/kitaab-builder/build200930-2317.html + ~/usr/basant/src/builder/kitaab-builder/build200930-2317.html + 2020-09-30 23:17:00 + +%title Flows +:puralek: +%date 2020-09-30 23:17

      +
        +
      • music/tv/books needs to be curated -> ▖▗▟▞▒▓▝ needs to be configured
      • +
      • images
          +
        • phone photos
        • +
        • images i like/content online
        • +
        +
      • +
      • writings/notes
      • +
      • consolidate jrnl - only has entries from April onwards.
      • +
      • old forgotten projects (boss man boss?)
      • +
      • other things from a forgotten age saved
      • +
      • Habits
      • +
      • Fitness
      • +
      • Location
      • +
      • Financial
      • +
      • Calendar/meetings
      • +
      • Tasks
      • +
      • School stuff
      • +
      +]]> +
      +
      + Rules for Backups + ~/usr/basant/src/builder/kitaab-builder/build200930-2316.html + ~/usr/basant/src/builder/kitaab-builder/build200930-2316.html + 2020-09-30 23:16:00 + +%title Rules for Backups +:puralek: +%date 2020-09-30 23:16

      +

      3-2-1 rule

      +
        +
      • 3 backups
      • +
      • in 2 mediums
      • +
      • with 1 in a remote location
      • +
      +

      backup should be automatic, with monthly/weekly schedules running to ensure no dataloss

      +]]> +
      +
      + Dealing with Thrashing + ~/usr/basant/src/builder/kitaab-builder/build200930-1921.html + ~/usr/basant/src/builder/kitaab-builder/build200930-1921.html + 2020-09-30 19:21:00 + +%title Dealing with Thrashing +:organization: +%date 2020-09-30 19:21

      +

      I thrash around a lot and don't tend to focus on one task at a time. This, I have known for a long time, and have tried to build systems to help me keep track of all the things I am doing so I can continue to operate in this way. But I think something needs to change.

      +

      I was thinking of setting a bi-weekly (once in 2 weeks) 'focus' and only doing tasks in that 'project'. This combined with a 1thingaday that I follow well, will hopefully help me achieve the things that I want to.

      +]]> +
      +
      + Data stores (ie not streams) + ~/usr/basant/src/builder/kitaab-builder/build200929-2026.html + ~/usr/basant/src/builder/kitaab-builder/build200929-2026.html + 2020-09-29 20:26:00 + +%title Data stores (ie not streams) +:puralek: +%date 2020-09-29 20:26

      +

      I need to find a data store for pdf recipes and a way to store workouts.

      +]]> +
      +
      + PDF pipeline + ~/usr/basant/src/builder/kitaab-builder/build200928-1351.html + ~/usr/basant/src/builder/kitaab-builder/build200928-1351.html + 2020-09-28 13:51:00 + +%title PDF pipeline +:dev:kitaab: +%date 2020-09-28 13:51

      +

      Firefox extension or shaarli grabber that takes pdf links downloads them and adds them to non-fiction syncthing directory to be available on hyperplane

      +]]> +
      +
      + Puralek for Line + ~/usr/basant/src/builder/kitaab-builder/build200928-0059.html + ~/usr/basant/src/builder/kitaab-builder/build200928-0059.html + 2020-09-28 00:59:00 + +%title Puralek for Line +:puralek:line:meta: +%date 2020-09-28 00:59

      +

      grasp for android?

      +]]> +
      +
      + Work Laptop Setup + ~/usr/basant/src/builder/kitaab-builder/build200928-0054.html + ~/usr/basant/src/builder/kitaab-builder/build200928-0054.html + 2020-09-28 00:54:00 + +%title Work Laptop Setup +:work: +%date 2020-09-28 00:54

      +

      Installing Ubuntu in a virtualbox is a nightmare

      +
        +
      • VirtualBox is very slow to install
      • +
      • HyperV has shit resolution and is very laggy
      • +
      • WSL requires a microsoft account -> need password-store
      • +
      +]]> +
      +
      + Kitaab on line + ~/usr/basant/src/builder/kitaab-builder/build200928-0048.html + ~/usr/basant/src/builder/kitaab-builder/build200928-0048.html + 2020-09-28 00:48:00 + +%title Kitaab on line +:dev:line:meta: +%date 2020-09-28 00:48

      +

      Problem: nix-on-droid doesn't allow you to browse the rest of the system -- see https://github.com/t184256/nix-on-droid/issues/78 +Fix: have a git repo I can pull to do initial config

      +

      Problem: Can't build vim-zettel, taskwiki, etc... because no nixpkgs +Fix: clone my fork TODO

      +

      Problem: nvim.nix still doesn't install node.js necessary for coc +Fix: include nodejs in nvim.nix? TODO

      +]]> +
      +
      + grasp changes + ~/usr/basant/src/builder/kitaab-builder/build200927-2244.html + ~/usr/basant/src/builder/kitaab-builder/build200927-2244.html + 2020-09-27 22:44:00 + +%title grasp changes +:dev:meta:kitaab: +%date 2020-09-27 22:44

      +

      Add multi-line patch from issue https://github.com/karlicoss/grasp/issues/22 +Get server to run vim -c VimwikiRegenerateTags +c ZettelGenerateTags webquote ~/vimwiki/webquotes.wiki

      +]]> +
      +
      + 200927-2157 + ~/usr/basant/src/builder/kitaab-builder/build200927-2157.html + ~/usr/basant/src/builder/kitaab-builder/build200927-2157.html + 2020-09-27 21:57:00 + +%title What is a type? | Lambda the Ultimate +:webquote: http://lambda-the-ultimate.org/node/5604 +%date [2020-09-27 Sun 21:56]

      +

      Types are mostly used in three ways:

      +
      +]]> +
      +
      + What is a type? | Lambda the Ultimate + ~/usr/basant/src/builder/kitaab-builder/build200927-2151.html + ~/usr/basant/src/builder/kitaab-builder/build200927-2151.html + 2020-09-27 21:51:00 + +%title What is a type? | Lambda the Ultimate +:webquote: http://lambda-the-ultimate.org/node/5604 +%date 2020-09-27 Sun 21:49] +Selection: +I'll repeat this here, since it seems quite relevant.

      +]]> +
      +
      + Standing on the Shoulders of Understandable Giants + ~/usr/basant/src/builder/kitaab-builder/build200927-1936.html + ~/usr/basant/src/builder/kitaab-builder/build200927-1936.html + 2020-09-27 19:36:00 + +%title Standing on the Shoulders of Understandable Giants +:writing:blog: +%date 2020-09-27 19:36

      +

      Many people admire modern software. The ease with which we can do incredible tasks is truly powerful; navigation, translation, taxes. Consumer technology has changed the way people operate. But it is a brittle tool. Trying to do anything outside of the scope of what was designed it falls apart. We cannot inspect it's workings, or configure personalizations to our own benefit. We do not get to build on top of the giants, simply pass through them in a very specific way.

      +

      There are those who refuse these terms entirely and opt to build their own tools. These craftspeople will forge the tools that fit their needs best. Building foundations at bedrock allows for the most control. Make the tools exactly as you need them. These people garner a deep respect from me.

      +

      I land somewhere in the middle.

      +

      A big development in my understanding of the craft was from the realization that I can just inspect open source code. After all that is the point. For a long time I was scared to peek behind the curtain, afraid that the runes would be illegible. But that was a silly fear. A big part of how I learn now is just looking at how other people solved a problem. Afterall the patterns are adaptable.

      +

      Being able to inspect and understand code doesn't have the same benefits as having built them entirely yourself. In exchange you are granted height, and as much control as you can muster. Can you master somebody else's spell enough to make it your own? I know the limits of my own power and so limiting the complexity is desirable.

      +

      No single person can understand the entirety of their toolchain. We must depend on each other in order to wield our artifacts at all. There's always another layer below 'bedrock'. The operating system underlies application space. The instruction set underlies the OS and BIOS. The silicon underlies the BIOS. The silicon must be extracted which requires additional industrial scale tools to shape and form.

      +

      Will you chisel away at the void, to craft the perfect tool? Or will bow to cosmic powers of the corpers you summon, happy enough be granted outcomes of incantions.

      +

      I will choose to stand of the shoulders of the giants I can understand. Those that I can also control.

      +]]> +
      +
      + Getting Grasp to work with Kitaab + ~/usr/basant/src/builder/kitaab-builder/build200927-1730.html + ~/usr/basant/src/builder/kitaab-builder/build200927-1730.html + 2020-09-27 17:30:00 + +%title Getting Grasp to work with Kitaab +:dev:meta: +%date 2020-09-27 17:30

      +

      I need to find a command I can run that will start Vimwiki from command line. (Probably through .vimrc -> nvim.nix) +Then I need to make a pull request to grasp to run subprocess.call('vim ') +Paste the contents into the open file? Show the interactive session?

      +]]> +
      +
      + Cosmo + ~/usr/basant/src/builder/kitaab-builder/build200927-1651.html + ~/usr/basant/src/builder/kitaab-builder/build200927-1651.html + 2020-09-27 16:51:00 + +%title Cosmo +:webquote: +%date 2020-09-27 16:51

      +

      And you may ask yourself +Well... How did I get here? +And you may ask yourself +"How do I work this?" +And you may ask yourself +"Where is that large automobile?" +And you may tell yourself +"This is not my beautiful house!"

      +

      Attention Conservation Notice: What follows is long, self-absorbed, and boring to look at; much of it was written ten or even twenty years ago.

      +

      http://bactra.org/

      +]]> +
      +
      + Critical Engineering Manifesto + ~/usr/basant/src/builder/kitaab-builder/build200927-1627.html + ~/usr/basant/src/builder/kitaab-builder/build200927-1627.html + 2020-09-27 16:27:00 + +%title Critical Engineering Manifesto +:webquote:dev:manifesto: +%date 2020-09-27 16:27

      +
        +
      1. The Critical Engineer expands "machine" to describe interrelationships encompassing devices, bodies, agents, forces and networks.
      2. +
      +

      https://criticalengineering.org/

      +]]> +
      +
      + Shaarli integration + ~/usr/basant/src/builder/kitaab-builder/build200927-0149.html + ~/usr/basant/src/builder/kitaab-builder/build200927-0149.html + 2020-09-27 01:49:00 + +%title Shaarli integration +:Kitaab:dev: +%date 2020-09-27 01:49

      +

      A shaarli integration for Kitaab.

      +

      Start with a CLI client + https://github.com/shaarli/python-shaarli-client is a start +Find a way to wrap them in vim commands +Insert them by tag/search/etc

      +]]> +
      +
      + Structure of Sorcery + ~/usr/basant/src/builder/kitaab-builder/build200927-0111.html + ~/usr/basant/src/builder/kitaab-builder/build200927-0111.html + 2020-09-27 01:11:00 + +%title Structure of Sorcery +:blog:maze:writing: +%date 2020-09-27 01:11

      +

      Magic, as we seem to understand it, is the ability to affect change in ways we didn't think possible. +Once you understand how the mechanism, by definition it is no longer magic.

      +

      In order to manifest impossible realities first we must be able to imagine them, hence belief is our primary tool. Those who search for these techniques are wixen. Our abilities tend to be localized and syncronicity the multiplier. Each may have their own rituals, but cooperation is our strength.

      +

      Enacting change is the purpose of all effort. Our tools must be as varied as the uses for energy, then. Change may be the only constant, but our mortality prohibits us from simply waiting for what we wish to happen.

      +]]> +
      +
      + Just so + ~/usr/basant/src/builder/kitaab-builder/build200927-0028.html + ~/usr/basant/src/builder/kitaab-builder/build200927-0028.html + 2020-09-27 00:28:00 + +%title Just so +:writing:maze:

      +

      the stack of papers may seem like chaos, but LRU it's the most efficient solution organized solution you can make

      +]]> +
      +
      + sealight services intro + ~/usr/basant/src/builder/kitaab-builder/build200927-0010.html + ~/usr/basant/src/builder/kitaab-builder/build200927-0010.html + 2020-09-27 00:10:00 + +%title sealight services intro +:sealight.services:writing: +%date 2020-09-27 00:10

      +

      sealight.services is the cove you wash up on after having drifted too far out from comfortable waters. As you look around you notice some of the rock is smooth, especially where the light from the gap in the roof shines through. You see scorched driftwood and a couple large stones laid out with intention. You feel the warmth on your skin.

      +

      Do you remember how you got here now? +Do you remember where you were going to go?

      +]]> +
      +
      + De-facto proprietary software + ~/usr/basant/src/builder/kitaab-builder/build200926-2245.html + ~/usr/basant/src/builder/kitaab-builder/build200926-2245.html + 2020-09-26 22:45:00 + +%title De-facto proprietary software +:blog:future-of-foss:quotes: +%date 2020-09-26 22:45 +You want to download thousands of lines of useful, but random, code from the internet, for free, run it in a production web server, or worse, your user’s machine, trust it with your paying users’ data and reap that sweet dough. We all do. But then you can’t be bothered to check the license, understand the software you are running and still want to blame the people who make your business a possibility when mistakes happen, while giving them nothing for it? This is both incompetence and entitlement.

      +

      https://13brane.net/rants/de-facto-closed-source/

      +]]> +
      +
      +
      +
      \ No newline at end of file diff --git a/src/kitaab-public/output/hitman-roguelike.html b/src/kitaab-public/output/hitman-roguelike.html new file mode 100644 index 0000000..4605e61 --- /dev/null +++ b/src/kitaab-public/output/hitman-roguelike.html @@ -0,0 +1,169 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + idea game dev + 12 Sep, 21 +

      :idea:game:dev:

      +

      A top down Hitman-like roguelike where you can gain abilities and equipment in order to take down a target. Based in a fantasy realm. Loosely related to theif too. Randomized level and floor plans. Environment plays a key role.

      +

      If Hotline Miami had a stealth mode.

      +

      Skills include:

      +
        +
      • blink
      • +
      • disguise
      • +
      • decoy?
      • +
      +

      enemy AI:

      +
        +
      • communicate
      • +
      • call for backup
      • +
      • put the environment in a heightened state
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/ideas.html b/src/kitaab-public/output/ideas.html new file mode 100644 index 0000000..823ac65 --- /dev/null +++ b/src/kitaab-public/output/ideas.html @@ -0,0 +1,161 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + idea + 12 Sep, 21 +

      %title Ideas page +:idea: +%date 240121 12:34

      +

      Water color painting +Forging a ring +Skydiving +Shooting a gun

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/index.html b/src/kitaab-public/output/index.html new file mode 100644 index 0000000..f8a1cf9 --- /dev/null +++ b/src/kitaab-public/output/index.html @@ -0,0 +1,63 @@ + + + + + + + Home | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      + +
      +
      + + + diff --git a/src/kitaab-public/output/intro.html b/src/kitaab-public/output/intro.html new file mode 100644 index 0000000..a34ff3a --- /dev/null +++ b/src/kitaab-public/output/intro.html @@ -0,0 +1,166 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + sealight.services writing + 12 Sep, 21 +

      :sealight.services:writing:

      +

      a small club for my friends? +start with just a matrix server and see if i can run one for just my friends, expand from there as necrssaey/desired

      +

      Narrative

      +

      its a scuttlebutt pub? or start with that.

      +

      27/04 - thinking if calling it "the others" in a find the others way

      +

      Thinking about situations for when people ask me about instagram/fb/how to contact them generally, and what I can do about it. I was thinking the best way is to start a community of people that i can invite if I think they're cool. The barrier to entry is actually a good thing? But this is not exclusively the context I have been thinking about this in. I also would like to start some kind of node/hub thing like fox has got going on with lain.haus/pixie.town. but i'm not sure what i'm after and I don't think I want to just give out open invites.

      +

      I'm thinking about whether I would want my irl friends to join it or online friends and how to shape the community such that everyone feels welcome. If it were to be with IRL folk, I would create a card on which is printed either a unique (probably expensive but "more secure" -- should that matter?) or just a link to sign up with my community. The trouble with these is always getting it off the ground. And of course the scale I'm looking for. i wouldn't want to hand out over 100 invites at least to start with -- but I'd need it to all be federated which isn't too difficult all the software already exists

      +

      speaking of software I'm questioning what services to run. What kind of community am I targeting here? How should I react to the people joining? I think I'd want to have a chat server and some kind of voice communication channel, i think that is important. at the very least and probably git too. i'd need pixelfed for insta-normies, but i'm wondering whether to do pleroma/mastodon. It could really strengthen the community given that we don't have much tying us together to talk about in one chat room. chat rooms need to be focused, toots don't. maybe I should skip out on a chat server? maybe make it exclusive? even cybre.space can't get it's matrix room to take off. +on a technical level I'd have to figure out how to make all the sign ups happen through 1 signup, or some sort of form? this is already turniing into a very large project...

      +

      Also thinking about what to call it. I have many ideas relating to a garden? I'm picturing a quiet cove or hidden bushland deep in a forest. A magical spot that we work together to build and create and own and share with others we trust. a faerie circle.

      +

      thats it. i figured out what i'm trying to do here. I'm trying to get 80 people together to form a cohort so we can split into smaller groups and find the others. everybody should get 3 invites, and i will start by inviting 20 people. now i need to think hard about which 20 people to start with, how to get a diverse crew and write a story to convince people to join, and somehow figure all the rest out.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/linux.html b/src/kitaab-public/output/linux.html new file mode 100644 index 0000000..992a978 --- /dev/null +++ b/src/kitaab-public/output/linux.html @@ -0,0 +1,226 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev //@ // + 12 Sep, 21 +

      linux tips and tricks +:dev: +nixOS

      +

      = installing an app to the gnome menu = +add an desktop entry to ~/.local/share/applications/ for desktop entries available to a single user (look in that folder for examples)

      +

      = cron = +crontab -e to edit the cron file +cron takes 5 inputs followed by the CMD you wish to run:

      +
        +
        • +
          • +
            • +
              • +
              • ls +min hour day month week
              • +
              +
            • +
            +
          • +
          +
        • +
        +
      • +
      +

      the above cron tag will run ls every minute of every day all the time. Hour is in 24hr format. So +00 00 * ~/scripts/music-pull +will run music-pull everyday at 12AM

      +

      its generally advisable to schedule these scripts at specific odd times so that they don't clash with other things

      +

      There are also other types of formats: +@reboot (i've run into trouble with this, as it is only called specifically when the computer is rebooted, not at any boot)

      +

      = ssh copy = +to copy your ssh key to a new computer run +ssh-copy-id user@server

      +

      = ssh config = +the ssh config file is truly versatile

      +

      = hamachi = +stop: /etc/init.d/logmein-hamachi stop +start: /etc/init.d/logmein-hamachi start

      +

      = git = +rename a branch:

      +
        +
      • git branch -m
      • +
      +

      pull upstream master changes:

      + +

      see remote repos:

      +
        +
      • git remote -v
      • +
      +

      add remote repo:

      +
        +
      • git remote add ssh://<user>@:<dir/of/remote>
      • +
      • git remote add https://<web.repo.com>:<dir/to/remote>
      • +
      +

      create a git branch:

      +
        +
      • git branch
      • +
      +

      checkout a branch:

      +
        +
      • git checkout
      • +
      +

      push to specific branch:

      +
        +
      • git push --set-upstream
      • +
      +

      = systemd = += theming =

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/maze.html b/src/kitaab-public/output/maze.html new file mode 100644 index 0000000..a43e5f6 --- /dev/null +++ b/src/kitaab-public/output/maze.html @@ -0,0 +1,171 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + writing blog + 12 Sep, 21 +

      :writing:blog:

      +

      Who am I writing for?

      +

      What am I trying to say?

      +

      How am I going to say/show it?

      +

      ============================= +ive been thinkingabout this a bunch and i kinda want my blog to be more "expanding" and interactive. branching narratives to follow that all tell a story, amd different visualizations and paths through and around this "web". entangaled and complicated like a wiki, but personal and navigable and spacious.

      +

      experiments in random linking, dark patterns, generated content, luck, and exploration. reflective of both myself as enigmatic, ▞▘▙▞▛▚▓▛ and intimate yet also of the internet now, Maze like and cofusing
      +"portals" to all the places my mind frequently wanders, some little story about a character thats based on me (a narrator?)

      +

      404 pages and redirects +cloaking +story telling +ever changing, like harry potter +identity posts as corner stones, hard to get to +challenging to navigate

      +

      aesthetic cultivation - waterfalls

      +

      narrative form of "Introduction" that is posted on my blog. +i want it to introduce them to my philosophies, interests, organization and perspective. i want it to turn in on itself and be confusing and well written. where i talk about all the things that are important to me. i want it to be the moral foundation, a rock that i can look back on and rely on to remind me of myself. i'm not quite sure how i'm going to do that, but i'm going to try.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/medias/.gitkeep b/src/kitaab-public/output/medias/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/kitaab-public/output/medias/2c5030bc48b4bfa9.jpeg b/src/kitaab-public/output/medias/2c5030bc48b4bfa9.jpeg new file mode 100644 index 0000000..cf89826 Binary files /dev/null and b/src/kitaab-public/output/medias/2c5030bc48b4bfa9.jpeg differ diff --git a/src/kitaab-public/output/medias/blue-man.png b/src/kitaab-public/output/medias/blue-man.png new file mode 100644 index 0000000..824a1f9 Binary files /dev/null and b/src/kitaab-public/output/medias/blue-man.png differ diff --git a/src/kitaab-public/output/medias/chihiro.jpg b/src/kitaab-public/output/medias/chihiro.jpg new file mode 100644 index 0000000..c1acd4e Binary files /dev/null and b/src/kitaab-public/output/medias/chihiro.jpg differ diff --git a/src/kitaab-public/output/medias/chisai_square.png b/src/kitaab-public/output/medias/chisai_square.png new file mode 100644 index 0000000..9046796 Binary files /dev/null and b/src/kitaab-public/output/medias/chisai_square.png differ diff --git a/src/kitaab-public/output/medias/city.jpeg b/src/kitaab-public/output/medias/city.jpeg new file mode 100644 index 0000000..d6810a5 Binary files /dev/null and b/src/kitaab-public/output/medias/city.jpeg differ diff --git a/src/kitaab-public/output/medias/kaguya.jpg b/src/kitaab-public/output/medias/kaguya.jpg new file mode 100644 index 0000000..b665de6 Binary files /dev/null and b/src/kitaab-public/output/medias/kaguya.jpg differ diff --git a/src/kitaab-public/output/medias/lady.jpeg b/src/kitaab-public/output/medias/lady.jpeg new file mode 100644 index 0000000..a976245 Binary files /dev/null and b/src/kitaab-public/output/medias/lady.jpeg differ diff --git a/src/kitaab-public/output/mushrooms.html b/src/kitaab-public/output/mushrooms.html new file mode 100644 index 0000000..55fd1d0 --- /dev/null +++ b/src/kitaab-public/output/mushrooms.html @@ -0,0 +1,174 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + cook grow solarpunk + 06 Dec, 21 +

      %title How to grow Mushrooms +:cook:grow:solarpunk: +%date 11-05-21 20:23

      +

      = 7 Basic Steps =

      +
        +
      • Grow a mushroom culture
          +
        • Needs a high nutrient petridish
        • +
        • Needs a clean environment so that mushrooms aren't competing with bacteria
        • +
        +
      • +
      • Take the mycelium and put it on sterilized grains
      • +
      • Expand the grain to create a mushroom spawn
      • +
      • Add the spawn to some substrate (coffee grounds!)
      • +
      • Wait for the mycelium to engulf the substrate
      • +
      • Change the environmental conditions
          +
        • Generally dropping the temperature and increasing humidity
        • +
        +
      • +
      • Harvest the mushroom fruit!!
      • +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/nixOS.html b/src/kitaab-public/output/nixOS.html new file mode 100644 index 0000000..54cd618 --- /dev/null +++ b/src/kitaab-public/output/nixOS.html @@ -0,0 +1,199 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + index + 19 Sep, 21 +

      :index:

      +

      nixpkgs

      +

      = basics = +nix is a functional, immutable package manager +nix (the package manager) is written in the nix language +nixOS is a linux distribution built on top of the nix package manager

      +

      in nixOS there are 2 kinds of packages. Regular packages and modules which do the configuration management of said packages. Both of these are written in the nix language. Even on nixOS configuration files generally cannot be set through the package manager. Insead home-manager can be used.

      +

      = installing nix package manager = +curl -o install-nix https://nixos.org/nix/install +curl -o install-nix.asc https://releases.nixos.org/nix/nix-2.3.7/install.asc +gpg2 --recv-keys B541D55301270E0BCF15CA5D8170B4726D7198DE +gpg2 --verify ./install-nix.asc +sh ./install-nix +rm ./install-nix.asc ./install-nix

      +

      = nix-isms = +dev environments: + generally the right way to define dev environments is through a shell.nix file which gets invoked when calling nix-shell + in this file we define which packages we expect in order to build and run the program

      +
      from there we can add it to a specific version of nixpkgs to reference and build tests, as well as flesh out a CI pipeline
      +
      +

      = build options = +in NixOS it often feels like the options are the magic part of building software. everyone seems to have just the right options in order to build the software they need +however, fear not, you too can be a master of options by searching at: +https://search.nixos.org/options or nixos-option

      +

      = install the OS = +https://gist.github.com/ladinu/bfebdd90a5afd45dec811296016b2a3f

      +

      have to use LUKS1 (grub2 doesn't support luks2 -> should be available by grub2.06)

      +

      = Generated Tags =

      +

      == nix ==

      + + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/psql.html b/src/kitaab-public/output/psql.html new file mode 100644 index 0000000..c3504a5 --- /dev/null +++ b/src/kitaab-public/output/psql.html @@ -0,0 +1,172 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev + 12 Sep, 21 +

      %title Postgres Commands +:dev: +%date 20200109-1320

      +

      = Quick Tips = +\l List all Databases +\c <database> Connect to a database +\dt List all tables (once connected to a db) +DELETE FROM <table> WHERE <condition> delete rows from a table +Strings must be wrapped in '' +create a table: +CREATE TABLE <table_name>( +column1 datatype, +column2 datatype, +column3 datatype, +..... +columnN datatype, +PRIMARY KEY( one or more columns ) +);

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/python.html b/src/kitaab-public/output/python.html new file mode 100644 index 0000000..6188494 --- /dev/null +++ b/src/kitaab-public/output/python.html @@ -0,0 +1,163 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + dev python tools + 12 Sep, 21 +

      :dev:python:tools:

      +

      = things to learn =

      +
        +
      • debugger: pdb
      • +
      • typing: mypy
      • +
      • testin: pytest
      • +
      • logging: logger
      • +
      +

      creating portable dev environments using mach-nix

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/see.html b/src/kitaab-public/output/see.html new file mode 100644 index 0000000..8e86be5 --- /dev/null +++ b/src/kitaab-public/output/see.html @@ -0,0 +1,158 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + blog maze writing + 12 Sep, 21 +

      :blog:maze:writing:

      +

      this is the Kitaab +it's not yours but you are free to look through it

      +

      it captures many details on the 200927-0111. but it is a particular structure used by a specific practioner. How you use it is up to you.

      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/tidalcycles.html b/src/kitaab-public/output/tidalcycles.html new file mode 100644 index 0000000..050f72f --- /dev/null +++ b/src/kitaab-public/output/tidalcycles.html @@ -0,0 +1,213 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + generative + 12 Sep, 21 +

      :generative: += start = +to start tidal cycles: +run 'scide' (or run the SuperCollider IDE) in terminal to start SuperCollider server +execute the following code in scide: +include("SuperDirt") +SuperDirt.start

      +

      open a new terminal and run tidalvim +you should now be running tidal, use ctrl+E to pass lines to tidal from vim

      +

      = basics = +when you add more sounds to each cycle, it speeds up, the time of the cycle remains constant

      +
      ----- is the buffer to super collider, there are 9 opened by default in tidal
      +/     --- the "command" to run
      +
      +

      v v +d1 $ sound "bd:2 bd bd ~" + ^ ^ ^ + \ \ --- is a rest note + \ --- is the sound that is going to be played; play the 3rd (0 indexed) sound in bd + --- magical $ notation

      +

      = subsequences = +using [] we can create sub sequences that run "together" in the same step of each cycle +this can be done recursively

      +

      using this we can achieve nice compound time signatures: +d1 $ n "[0 2 1] [4 4 5]" # s "drum"

      +

      alternative notation: +d1 $ n "0 2 1 . 4 4 5" # s "drum"

      +

      = speeding, slowing, repeating =

      +
        +
      • is the same as a subsequence (s "kick*2" == s "[kick kick]") +! is the same as repeating the sound (s "kick!2" == s "kick kick") +/ "divides" the step into n steps and alternates them
      • +
      +

      we can combine these to shorten lengthy things:

      +

      s "[kick [lo hi]/2]*2" == s "kick lo kick hi"

      +

      = polyphony =
      +, allows us to have multiple "tracks" in the same pattern but they must be in a subsequence!

      +

      d1 $ s "[bd sn, lo hi lo lo]"

      +

      d1 $ s "bd ~ sn ~" +d2 $ s "lo hi lo lo"

      +

      are the same

      +

      {} changes tidalcycles to make the steps align instead of the cycles aligning

      +

      = effects & commands =

      +

      stut - create echos +example + d1 $ stut 4 0.5 (-0.1) $ s "bd sn"

      +

      = adding a samples directory = +File > Open Start Up File > Add line ~dirt.loadSoundFiles("path/to/directory/*");

      +

      = pipes = +|> is the same as #, it takes values from the right and structure from the left +| indicates which side to take structure from +and the arrow indicates which side to take values from +hence with the following combinations +|> +<| +|<

      +

      | +we can mix and match any combinations

      +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/vim2nix.html b/src/kitaab-public/output/vim2nix.html new file mode 100644 index 0000000..24fada0 --- /dev/null +++ b/src/kitaab-public/output/vim2nix.html @@ -0,0 +1,168 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + vim nix + 12 Sep, 21 +

      :vim:nix:

      +

      pull upstream changes +create a github api key so update.py doesn't get rate limited +run update: +GITHUB_API_KEY=<> ./update.py --add "/" +build the vim plugin: +nix-build -A vimPlugins. +test the installation: +nixos-rebuild test -I nixpkgs=~/usr/nixpkgs/

      +

      = Generated Tags =

      +

      == vim ==

      + + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/vimwiki.html b/src/kitaab-public/output/vimwiki.html new file mode 100644 index 0000000..8b4b6cc --- /dev/null +++ b/src/kitaab-public/output/vimwiki.html @@ -0,0 +1,365 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + + +

      = Kitaab = +A lab notebook for a digital garden and a physical life +now +pipeline

      +

      = Plant Gardening = +A small garden of ideas

      + +

      = The Lab = +Notes of alchemy

      + +

      = The Way = +Spiritual power reserves

      + +

      = Food =

      + +

      = Tadke = +Seedlings yet to see their dawn

      + +

      = Scratch = +The humdrum of a chore list

      + + +
      +
      +
      + + + diff --git a/src/kitaab-public/output/webquotes.html b/src/kitaab-public/output/webquotes.html new file mode 100644 index 0000000..53d3ad9 --- /dev/null +++ b/src/kitaab-public/output/webquotes.html @@ -0,0 +1,285 @@ + + + + + + + page_title | Kitaab + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + Kitaab +
      +
      +
      +
      + + webquote https webquote https webquote https Work hard to improve. Success is also easy to handle webquote https webquote https webquote https webquote https webquote https webquote https webquote https webquote quote https webquote https webquote quote https webquote quote https webquote quote https webquote quote https webquote quote https webquote https webquote https webquote http + 26 Sep, 21 +

      = Generated Tags = +== webquote ==

      + +

      title Ask HN: What are some skills you have that are worth learning? | Hacker News +:webquote: https://news.ycombinator.com/item?id=23758188 +date [2020-10-03 Sat 15:51]

      +

      "the things you own, end up owning you",

      +
      +

      title Ask HN: What are some skills you have that are worth learning? | Hacker News +:webquote: https://news.ycombinator.com/item?id=23758188 +date [2020-10-03 Sat 15:52]

      +

      “A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.” ~ Robert Anson Heinlein

      +
      +

      title Perlisisms - "Epigrams in Programming" by Alan J. Perlis +:webquote: https://www.cs.yale.edu/homes/perlis-alan/quotes.html +date [2020-10-07 Wed 00:03]

      +
        +
      1. Dealing with failure is easy: Work hard to improve. Success is also easy to handle: You've solved the wrong problem. Work hard to improve.
      2. +
      +
      +

      title Perlisisms - "Epigrams in Programming" by Alan J. Perlis +:webquote: https://www.cs.yale.edu/homes/perlis-alan/quotes.html +date [2020-10-07 Wed 00:03]

      +
        +
      1. The proof of a system's value is its existence.
      2. +
      +
      +

      title Perlisisms - "Epigrams in Programming" by Alan J. Perlis +:webquote: https://www.cs.yale.edu/homes/perlis-alan/quotes.html +date [2020-10-07 Wed 00:04]

      +
        +
      1. Don't have good ideas if you aren't willing to be responsible for them.
      2. +
      +
      +

      title Perlisisms - "Epigrams in Programming" by Alan J. Perlis +:webquote: https://www.cs.yale.edu/homes/perlis-alan/quotes.html +date [2020-10-07 Wed 00:05]

      +
        +
      1. Think of all the psychic energy expended in seeking a fundamental distinction between "algorithm" and "program".
      2. +
      +
      +

      title Perlisisms - "Epigrams in Programming" by Alan J. Perlis +:webquote: https://www.cs.yale.edu/homes/perlis-alan/quotes.html +date [2020-10-07 Wed 00:05]

      +
        +
      1. The goal of computation is the emulation of our synthetic abilities, not the understanding of our analytic ones.
      2. +
      +
      +

      title Perlisisms - "Epigrams in Programming" by Alan J. Perlis +:webquote: https://www.cs.yale.edu/homes/perlis-alan/quotes.html +date [2020-10-07 Wed 00:06]

      +
        +
      1. Perhaps if we wrote programs from childhood on, as adults we'd be able to read them.
      2. +
      +
      +

      title Perlisisms - "Epigrams in Programming" by Alan J. Perlis +:webquote: https://www.cs.yale.edu/homes/perlis-alan/quotes.html +date [2020-10-07 Wed 00:07]

      +
        +
      1. Recursion is the root of computation since it trades description for time.
      2. +
      +
      +

      title Humans are more closely related than we commonly think | Hacker News +:webquote: https://news.ycombinator.com/item?id=24686904 +date [2020-10-07 Wed 00:15]

      +

      An intuition about the "appearing trillions of times in a family tree" is to realize that family trees are actually a binary tree extending backwards in time--i.e. each person has exactly two parents, who have exactly two parents, and so on. So N generations back, there are 2^N individuals. Obviously, there weren't 2^100 people on Earth at any point in time, so this backwards tree starts folding back on itself, containing duplications. Go back far enough and there is a set of individuals who were alive at a particular point in time that completely cover that forward tree.

      +
      +

      title Ask HN: What is your favorite motto? | Hacker News +:webquote:quote: https://news.ycombinator.com/item?id=24436135 +date [2020-10-07 Wed 00:28]

      +

      "A witty saying proves nothing."

      +
      +

      -- Voltaire

      +

      title Ask HN: What is your favorite motto? | Hacker News +:webquote: https://news.ycombinator.com/item?id=24436135 +date [2020-10-07 Wed 00:29]

      +

      "Conformity or rebellion?"

      +
      +

      “Neither one. Both ways are simple-minded– they are only for people who cannot cope with contradiction and ambiguity.” - Neal Stephenson's The Diamond Age

      +

      title Ask HN: What is your favorite motto? | Hacker News +:webquote:quote: https://news.ycombinator.com/item?id=24436135 +date [2020-10-07 Wed 00:30]

      +

      "Everything in excess! To enjoy the flavor of life, take big bites. Moderation is for monks."

      +
      +

      Lazarus Long, from Heinlein's "Time Enough for Love"

      +

      title Ask HN: What is your favorite motto? | Hacker News +:webquote:quote: https://news.ycombinator.com/item?id=24436135 +date [2020-10-07 Wed 00:30]

      +

      “It is not necessary for a man to be actively bad in order to make a failure in life; simple inaction will accomplish it. Nature has everywhere written her protest against idleness; everything which ceases to struggle toward an ideal, the constant effort to get higher and further, which develops manhood and character.”

      +
      +

      ― James Terry White

      +

      title Ask HN: What is your favorite motto? | Hacker News +:webquote:quote: https://news.ycombinator.com/item?id=24436135 +date [2020-10-07 Wed 00:31]

      +

      ‘If I were to wish for anything, I should not wish for wealth and power, but for the passionate sense of the potential, for the eye which, ever young and ardent, sees the possible. Pleasure disappoints, possibility never. ’

      +
      +
        +
      • Kierkegaard
      • +
      +

      title Ask HN: What is your favorite motto? | Hacker News +:webquote:quote: https://news.ycombinator.com/item?id=24436135 +date [2020-10-07 Wed 00:32]

      +

      "More broadly, nobody is going to teach you to think for yourself. A large fraction of what people around you believe is mistaken. Internalize this and practice coming up with your own worldview. The correlation between it and those around you shouldn't be too strong unless you think you were especially lucky in your initial conditions."

      +
      +

      title Ask HN: What is your favorite motto? | Hacker News +:webquote:quote: https://news.ycombinator.com/item?id=24436135 +date [2020-10-07 Wed 00:36]

      +

      “If you’re not willing to go too far, you’ll never go far enough.”

      +
      +

      title Some thoughts on a strategy to force a reduction of hours of labor | The Real Movement +:webquote: https://therealmovement.wordpress.com/2017/05/01/some-thoughts-on-a-strategy-to-force-a-reduction-of-hours-of-labor/ +date [2020-10-11 Sun 18:40]

      +

      Free time is the abolition of production, distribution and labor as the organizing principle of society.

      +
      +

      title Some thoughts on a strategy to force a reduction of hours of labor | The Real Movement +:webquote: https://therealmovement.wordpress.com/2017/05/01/some-thoughts-on-a-strategy-to-force-a-reduction-of-hours-of-labor/ +date [2020-10-11 Sun 18:41]

      +

      The very idea of placing an embargo on labor time is so outrageous as to be unthinkable. It will take some time for people to adjust. People who today would not consider walking off the job to win union recognition have to be convinced to walk off to emancipate themselves from wage slavery entirely.

      +
      +

      title SoyWiki +:webquote: http://danielchoi.com/software/soywiki.html +date [2020-10-11 Sun 19:35]

      +

      Because the link pattern is so minimal and succinct, writing wiki links interrupts your flow of thought less than other wiki link patterns. +Comment: +this is why i dont like camel case. having to decide a name at all can be limiting.

      +
      + +
      +
      +
      + + + diff --git a/src/kitaab-public/partial/item.xml b/src/kitaab-public/partial/item.xml new file mode 100644 index 0000000..5daaebf --- /dev/null +++ b/src/kitaab-public/partial/item.xml @@ -0,0 +1,9 @@ + + rssItemTitle + rssItemUrl + rssItemUrl + rssItemDate + + + + \ No newline at end of file diff --git a/src/kitaab-public/partial/main.html b/src/kitaab-public/partial/main.html new file mode 100644 index 0000000..5bff674 --- /dev/null +++ b/src/kitaab-public/partial/main.html @@ -0,0 +1,59 @@ + + + + + + + page_title | name_of_site + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + name_of_site +
      +
      +
      +
      + page_navigation + page_tags + page_date + page_body +
      +
      +
      + + + diff --git a/src/kitaab-public/partial/nav.html b/src/kitaab-public/partial/nav.html new file mode 100644 index 0000000..ade2228 --- /dev/null +++ b/src/kitaab-public/partial/nav.html @@ -0,0 +1,10 @@ + diff --git a/src/kitaab-public/partial/rss.xml b/src/kitaab-public/partial/rss.xml new file mode 100644 index 0000000..f863bd6 --- /dev/null +++ b/src/kitaab-public/partial/rss.xml @@ -0,0 +1,15 @@ + + + +name_of_site | site_meta_description +build_url +name_of_site — site_meta_description +date_build + + build_urlassets/rss.png + name_of_site — site_meta_description +build_url + +rss_content + + \ No newline at end of file diff --git a/src/kitaab-public/raw/200926-2245.wiki b/src/kitaab-public/raw/200926-2245.wiki new file mode 100644 index 0000000..664eb2c --- /dev/null +++ b/src/kitaab-public/raw/200926-2245.wiki @@ -0,0 +1,7 @@ +%title De-facto proprietary software +:blog:future-of-foss:quotes: +%date 2020-09-26 22:45 +You want to download thousands of lines of useful, but random, code from the internet, for free, run it in a production web server, or worse, your user’s machine, trust it with your paying users’ data and reap that sweet dough. We all do. But then you can’t be bothered to check the license, understand the software you are running and still want to blame the people who make your business a possibility when mistakes happen, while giving them nothing for it? This is both incompetence and entitlement. + +https://13brane.net/rants/de-facto-closed-source/ + diff --git a/src/kitaab-public/raw/200927-0010.wiki b/src/kitaab-public/raw/200927-0010.wiki new file mode 100644 index 0000000..a5035b6 --- /dev/null +++ b/src/kitaab-public/raw/200927-0010.wiki @@ -0,0 +1,8 @@ +%title sealight services intro +:sealight.services:writing: +%date 2020-09-27 00:10 + +sealight.services is the cove you wash up on after having drifted too far out from comfortable waters. As you look around you notice some of the rock is smooth, especially where the light from the gap in the roof shines through. You see scorched driftwood and a couple large stones laid out with intention. You feel the warmth on your skin. + +Do you remember how you got here now? +Do you remember where you were going to go? diff --git a/src/kitaab-public/raw/200927-0028.wiki b/src/kitaab-public/raw/200927-0028.wiki new file mode 100644 index 0000000..bd0a115 --- /dev/null +++ b/src/kitaab-public/raw/200927-0028.wiki @@ -0,0 +1,4 @@ +%title Just so +:writing:maze: + +the stack of papers may seem like chaos, but LRU it's the most efficient solution organized solution you can make diff --git a/src/kitaab-public/raw/200927-0111.wiki b/src/kitaab-public/raw/200927-0111.wiki new file mode 100644 index 0000000..7bfaed2 --- /dev/null +++ b/src/kitaab-public/raw/200927-0111.wiki @@ -0,0 +1,10 @@ +%title Structure of Sorcery +:blog:maze:writing: +%date 2020-09-27 01:11 + +Magic, as we seem to understand it, is the ability to affect change in ways we didn't think possible. +Once you understand how the mechanism, by definition it is no longer magic. + +In order to manifest impossible realities first we must be able to imagine them, hence belief is our primary tool. Those who search for these techniques are wixen. Our abilities tend to be localized and syncronicity the multiplier. Each may have their own rituals, but cooperation is our strength. + +Enacting change is the purpose of all effort. Our tools must be as varied as the uses for energy, then. Change may be the only constant, but our mortality prohibits us from simply waiting for what we wish to happen. diff --git a/src/kitaab-public/raw/200927-0149.wiki b/src/kitaab-public/raw/200927-0149.wiki new file mode 100644 index 0000000..3ae9845 --- /dev/null +++ b/src/kitaab-public/raw/200927-0149.wiki @@ -0,0 +1,10 @@ +%title Shaarli integration +:Kitaab:dev: +%date 2020-09-27 01:49 + +A shaarli integration for Kitaab. + +Start with a CLI client + https://github.com/shaarli/python-shaarli-client is a start +Find a way to wrap them in vim commands +Insert them by tag/search/etc diff --git a/src/kitaab-public/raw/200927-1627.wiki b/src/kitaab-public/raw/200927-1627.wiki new file mode 100644 index 0000000..93db7fb --- /dev/null +++ b/src/kitaab-public/raw/200927-1627.wiki @@ -0,0 +1,7 @@ +%title Critical Engineering Manifesto +:webquote:dev:manifesto: +%date 2020-09-27 16:27 + + 6. The Critical Engineer expands "machine" to describe interrelationships encompassing devices, bodies, agents, forces and networks. + +https://criticalengineering.org/ diff --git a/src/kitaab-public/raw/200927-1651.wiki b/src/kitaab-public/raw/200927-1651.wiki new file mode 100644 index 0000000..e7a8a61 --- /dev/null +++ b/src/kitaab-public/raw/200927-1651.wiki @@ -0,0 +1,16 @@ +%title Cosmo +:webquote: +%date 2020-09-27 16:51 + +And you may ask yourself +Well... How did I get here? +And you may ask yourself +"How do I work this?" +And you may ask yourself +"Where is that large automobile?" +And you may tell yourself +"This is not my beautiful house!" + +Attention Conservation Notice: What follows is long, self-absorbed, and boring to look at; much of it was written ten or even twenty years ago. + +http://bactra.org/ diff --git a/src/kitaab-public/raw/200927-1730.wiki b/src/kitaab-public/raw/200927-1730.wiki new file mode 100644 index 0000000..604f1c6 --- /dev/null +++ b/src/kitaab-public/raw/200927-1730.wiki @@ -0,0 +1,7 @@ +%title Getting Grasp to work with Kitaab +:dev:meta: +%date 2020-09-27 17:30 + +I need to find a command I can run that will start Vimwiki from command line. (Probably through .vimrc -> nvim.nix) +Then I need to make a pull request to grasp to run subprocess.call('vim ') +Paste the contents into the open file? Show the interactive session? diff --git a/src/kitaab-public/raw/200927-1936.wiki b/src/kitaab-public/raw/200927-1936.wiki new file mode 100644 index 0000000..3c28aaf --- /dev/null +++ b/src/kitaab-public/raw/200927-1936.wiki @@ -0,0 +1,19 @@ +%title Standing on the Shoulders of Understandable Giants +:writing:blog: +%date 2020-09-27 19:36 + +Many people admire modern software. The ease with which we can do incredible tasks is truly powerful; navigation, translation, taxes. Consumer technology has changed the way people operate. But it is a brittle tool. Trying to do anything outside of the scope of what was designed it falls apart. We cannot inspect it's workings, or configure personalizations to our own benefit. We do not get to build on top of the giants, simply pass through them in a very specific way. + +There are those who refuse these terms entirely and opt to build their own tools. These craftspeople will forge the tools that fit their needs best. Building foundations at bedrock allows for the most control. Make the tools exactly as you need them. These people garner a deep respect from me. + +I land somewhere in the middle. + +A big development in my understanding of the craft was from the realization that I can just inspect open source code. After all that is the point. For a long time I was scared to peek behind the curtain, afraid that the runes would be illegible. But that was a silly fear. A big part of how I learn now is just looking at how other people solved a problem. Afterall the patterns are adaptable. + +Being able to inspect and understand code doesn't have the same benefits as having built them entirely yourself. In exchange you are granted height, and as much control as you can muster. Can you master somebody else's spell enough to make it your own? I know the limits of my own power and so limiting the complexity is desirable. + +No single person can understand the entirety of their toolchain. We must depend on each other in order to wield our artifacts at all. There's always another layer below 'bedrock'. The operating system underlies application space. The instruction set underlies the OS and BIOS. The silicon underlies the BIOS. The silicon must be extracted which requires additional industrial scale tools to shape and form. + +Will you chisel away at the void, to craft the perfect tool? Or will bow to cosmic powers of the corpers you summon, happy enough be granted outcomes of incantions. + +I will choose to stand of the shoulders of the giants I can understand. Those that I can also control. diff --git a/src/kitaab-public/raw/200927-2151.wiki b/src/kitaab-public/raw/200927-2151.wiki new file mode 100644 index 0000000..e89337a --- /dev/null +++ b/src/kitaab-public/raw/200927-2151.wiki @@ -0,0 +1,6 @@ +%title What is a type? | Lambda the Ultimate +:webquote: http://lambda-the-ultimate.org/node/5604 +%date 2020-09-27 Sun 21:49] +Selection: +I'll repeat this here, since it seems quite relevant. + diff --git a/src/kitaab-public/raw/200927-2157.wiki b/src/kitaab-public/raw/200927-2157.wiki new file mode 100644 index 0000000..96a0fe1 --- /dev/null +++ b/src/kitaab-public/raw/200927-2157.wiki @@ -0,0 +1,7 @@ + +%title What is a type? | Lambda the Ultimate +:webquote: http://lambda-the-ultimate.org/node/5604 +%date [2020-09-27 Sun 21:56] + +> Types are mostly used in three ways: + diff --git a/src/kitaab-public/raw/200927-2244.wiki b/src/kitaab-public/raw/200927-2244.wiki new file mode 100644 index 0000000..63ddd24 --- /dev/null +++ b/src/kitaab-public/raw/200927-2244.wiki @@ -0,0 +1,6 @@ +%title grasp changes +:dev:meta:kitaab: +%date 2020-09-27 22:44 + +Add multi-line patch from issue https://github.com/karlicoss/grasp/issues/22 +Get server to run vim -c VimwikiRegenerateTags +c ZettelGenerateTags webquote ~/vimwiki/webquotes.wiki diff --git a/src/kitaab-public/raw/200928-0048.wiki b/src/kitaab-public/raw/200928-0048.wiki new file mode 100644 index 0000000..0c77395 --- /dev/null +++ b/src/kitaab-public/raw/200928-0048.wiki @@ -0,0 +1,14 @@ +%title Kitaab on line +:dev:line:meta: +%date 2020-09-28 00:48 + +Problem: nix-on-droid doesn't allow you to browse the rest of the system -- see https://github.com/t184256/nix-on-droid/issues/78 +Fix: have a git repo I can pull to do initial config + +Problem: Can't build vim-zettel, taskwiki, etc... because no nixpkgs +Fix: clone my fork TODO + +Problem: nvim.nix still doesn't install node.js necessary for coc +Fix: include nodejs in nvim.nix? TODO + + diff --git a/src/kitaab-public/raw/200928-0054.wiki b/src/kitaab-public/raw/200928-0054.wiki new file mode 100644 index 0000000..227915a --- /dev/null +++ b/src/kitaab-public/raw/200928-0054.wiki @@ -0,0 +1,8 @@ +%title Work Laptop Setup +:work: +%date 2020-09-28 00:54 + +Installing Ubuntu in a virtualbox is a nightmare +- VirtualBox is very slow to install +- HyperV has shit resolution and is very laggy +- WSL requires a microsoft account -> need password-store diff --git a/src/kitaab-public/raw/200928-0059.wiki b/src/kitaab-public/raw/200928-0059.wiki new file mode 100644 index 0000000..2cf0977 --- /dev/null +++ b/src/kitaab-public/raw/200928-0059.wiki @@ -0,0 +1,5 @@ +%title Puralek for Line +:puralek:line:meta: +%date 2020-09-28 00:59 + +grasp for android? diff --git a/src/kitaab-public/raw/200928-1351.wiki b/src/kitaab-public/raw/200928-1351.wiki new file mode 100644 index 0000000..36c0821 --- /dev/null +++ b/src/kitaab-public/raw/200928-1351.wiki @@ -0,0 +1,5 @@ +%title PDF pipeline +:dev:kitaab: +%date 2020-09-28 13:51 + +Firefox extension or shaarli grabber that takes pdf links downloads them and adds them to non-fiction syncthing directory to be available on [[hyperplane]] diff --git a/src/kitaab-public/raw/200929-2026.wiki b/src/kitaab-public/raw/200929-2026.wiki new file mode 100644 index 0000000..7ddb48b --- /dev/null +++ b/src/kitaab-public/raw/200929-2026.wiki @@ -0,0 +1,5 @@ +%title Data stores (ie not streams) +:puralek: +%date 2020-09-29 20:26 + +I need to find a data store for pdf recipes and a way to store workouts. diff --git a/src/kitaab-public/raw/200930-1921.wiki b/src/kitaab-public/raw/200930-1921.wiki new file mode 100644 index 0000000..b52d328 --- /dev/null +++ b/src/kitaab-public/raw/200930-1921.wiki @@ -0,0 +1,7 @@ +%title Dealing with Thrashing +:organization: +%date 2020-09-30 19:21 + +I thrash around a lot and don't tend to focus on one task at a time. This, I have known for a long time, and have tried to build systems to help me keep track of all the things I am doing so I can continue to operate in this way. But I think something needs to change. + +I was thinking of setting a bi-weekly (once in 2 weeks) 'focus' and only doing tasks in that 'project'. This combined with a [[1thingaday]] that I follow well, will hopefully help me achieve the things that I want to. diff --git a/src/kitaab-public/raw/200930-2316.wiki b/src/kitaab-public/raw/200930-2316.wiki new file mode 100644 index 0000000..aa3e9b1 --- /dev/null +++ b/src/kitaab-public/raw/200930-2316.wiki @@ -0,0 +1,10 @@ +%title Rules for Backups +:puralek: +%date 2020-09-30 23:16 + +3-2-1 rule +* 3 backups +* in 2 mediums +* with 1 in a remote location + +backup should be automatic, with monthly/weekly schedules running to ensure no dataloss diff --git a/src/kitaab-public/raw/200930-2317.wiki b/src/kitaab-public/raw/200930-2317.wiki new file mode 100644 index 0000000..e0ba181 --- /dev/null +++ b/src/kitaab-public/raw/200930-2317.wiki @@ -0,0 +1,19 @@ +%title Flows +:puralek: +%date 2020-09-30 23:17 + +* music/tv/books needs to be curated -> [[▖▗▟▞▒▓▝]] needs to be configured +* images + * phone photos + * images i like/content online +* writings/notes +* consolidate jrnl - only has entries from April onwards. +* old forgotten projects (boss man boss?) +* other things from a forgotten age saved +* Habits +* Fitness +* Location +* Financial +* Calendar/meetings +* Tasks +* School stuff diff --git a/src/kitaab-public/raw/200930-2319.wiki b/src/kitaab-public/raw/200930-2319.wiki new file mode 100644 index 0000000..2e4fdf7 --- /dev/null +++ b/src/kitaab-public/raw/200930-2319.wiki @@ -0,0 +1,11 @@ +%title Why have an HPI? +:puralek:writing: +%date 2020-09-30 23:19 + +story: + when thinking about how to view and save and store data such that it makes the most sense, having an interface that classifies arbitrarily tagged data (podcasts, files, rss feeds, etc etc) to show the content you're looking for sounds interesting. Having the same set of tags across all the formats seems like a good place to start this endeavour but I fear this may be not concrete enough to work with yet + +A collection of my raw data from the past that should be organized. A curation of the media ive enjoyed, my creative endeavours and things that i saved. Ultimately aims to be a museum of me to help me understand myself. how can a museum also be living though? my computer is a delicate dance atop the terminal, how could it be static? + +The problem is that my information is scattered, unindexed, and of an unknown quality +This goes beyond just collecting data, but using a collection of data to create new tools to interact with it. Formatting and organising my own information so that it's accessible to learn from diff --git a/src/kitaab-public/raw/201001-1906.wiki b/src/kitaab-public/raw/201001-1906.wiki new file mode 100644 index 0000000..a89ba7c --- /dev/null +++ b/src/kitaab-public/raw/201001-1906.wiki @@ -0,0 +1,7 @@ +%title Vim tricks +:kendrit:vim: +%date 2020-10-01 19:06 + +Screen: H (top of screen), M (middle of screen), L (bottom of screen) + +taken from: https://missing.csail.mit.edu/2020/editors/ diff --git a/src/kitaab-public/raw/201001-1949.wiki b/src/kitaab-public/raw/201001-1949.wiki new file mode 100644 index 0000000..ffc95d1 --- /dev/null +++ b/src/kitaab-public/raw/201001-1949.wiki @@ -0,0 +1,32 @@ +%title My journey with Linux +:blog:writing: +%date 2020-10-01 19:49 + +Started out experimenting with VMs in high school (2013) + never got very far (dont think i actually got an install working) +get sick of windows slowing down my laptop in college (2015?) +decide to install Arch to bootloader because I'm hardcore (and was on break from school) +try many times to get it installed +get it working, install WM only -- bspwm was trendy at the time +learn shell, git, vim because all the r/unixporn and /g/ desktop threads were doing that +learn about AUR +keep forgetting to run pacman -Syu and then when I do it breaks my computer +get sick of that and install debian net-install +continue running bspwm +become indoctrinated into the FOSS zealotry +continue with debian net-install, bspwm, vim -> happy with my setup +... +buy a chromebook for uni (2016) +install xfce on it because compiling on chromebook was wack +... +buy a desktop (2017) +use similar setup to original laptop +turn laptop into server +start learning about self hosting foss shit to make my life better +... +but have to do uni shit +buy librem13v3 (2019) +get sick of having to do everything by hand on desktop and switch to mostly using laptop +laptop keyboard sucks though (using ErgoDox EZ on desktop) +learn about nixOS +install it on everythinig so I don't have to keep recreating setups. diff --git a/src/kitaab-public/raw/201003-1607.wiki b/src/kitaab-public/raw/201003-1607.wiki new file mode 100644 index 0000000..13ff007 --- /dev/null +++ b/src/kitaab-public/raw/201003-1607.wiki @@ -0,0 +1,5 @@ +%title Keyboard changes +:ops: +%date 2020-10-03 16:07 + +Add backtick diff --git a/src/kitaab-public/raw/201004-2232.wiki b/src/kitaab-public/raw/201004-2232.wiki new file mode 100644 index 0000000..924c1de --- /dev/null +++ b/src/kitaab-public/raw/201004-2232.wiki @@ -0,0 +1,6 @@ +%title MAMGrab +:dev:pirate: +%date 2020-10-04 22:32 + +Python script to grab .torrent files from MAM's API (https://www.myanonamouse.net/api/endpoint.php/1/tor/js/loadSearchJSONbasic.php ) + diff --git a/src/kitaab-public/raw/201006-2310.wiki b/src/kitaab-public/raw/201006-2310.wiki new file mode 100644 index 0000000..85d8338 --- /dev/null +++ b/src/kitaab-public/raw/201006-2310.wiki @@ -0,0 +1,7 @@ +%title taskwiki fix +:meta:dev: +%date 2020-10-06 23:10 + +currently taskwiki is broken because it requires a new version of tasklib (2.2.1) +tasklib is in nixpkgs/pkgs/development/python-modules/taskwiki +I need to change the sha256 hash to update to the new version diff --git a/src/kitaab-public/raw/201013-2143.wiki b/src/kitaab-public/raw/201013-2143.wiki new file mode 100644 index 0000000..14edfa2 --- /dev/null +++ b/src/kitaab-public/raw/201013-2143.wiki @@ -0,0 +1,8 @@ +%title HDD Catalouge +:puralek:backup: +%date 2020-10-13 21:43 + +Silver -> Memories + Nostalgia +Black -> +Mother of all HDD -> Music +Big Black -> Movies + TV diff --git a/src/kitaab-public/raw/201013-2144.wiki b/src/kitaab-public/raw/201013-2144.wiki new file mode 100644 index 0000000..c5bb113 --- /dev/null +++ b/src/kitaab-public/raw/201013-2144.wiki @@ -0,0 +1,23 @@ +%title Bowl to NixOS Migration +:puralek:bowl: +%date 2020-10-13 21:44 + +Wish to migrate all the services on bowl to nixOS from Ubuntu +As part of [[Puralek]] +Necessary in order to add wireguard + += Services = +* VPN -> Wireguard +* AirSonic +* [[Nextcloud]] + * Contacts + * Calendar + * Files + * Pictures + * GpxPod +* TaskWarrior +* Wallabag +* Shaarli +* NFS share (TV/Movies) +* Headphones/Lidarr/Sonarr [[▒▚▝▐▐░]] +* beancount + fava ([[finances]]) diff --git a/src/kitaab-public/raw/201013-2206.wiki b/src/kitaab-public/raw/201013-2206.wiki new file mode 100644 index 0000000..3b2ef46 --- /dev/null +++ b/src/kitaab-public/raw/201013-2206.wiki @@ -0,0 +1,23 @@ +%title Flows for HPI +:puralek: +%date 2020-10-13 22:06 + += flows = +[[shaarli]] (▟▓▟▚▖▗▜/▜▒▔/▓▞▚░▚▘▙) -> ▝▛▐▔▐▔/▟░▘▙▐░▟/▚▓▔▘▙▝▐▓▒▓▚ +~~ email (links) -> shaarli ~~ +telegram chanel -> rss +telegram self messages -> ?? +rss stars -> [[Blog]] +telegram messages more than 5 years old -> archive +firefox tab groups -> sync (i think this syncs), files +~~ are.na -> shaarli ([[read-imap]]) ~~ +slack music -> shaarli? +#theStudio -> Shaarli +~~ gnome-pomodoro -> time tracker -> [[newpage]] ~~ +uHabits -> habit-server -> [[habitsGtk]] / dijo +Kitaab -> [[Blog]] +Wallabag -> Annotations +Kobo -> Annotations +merveilles.town -> Notes + +take [[media]] and throw it in shaarli diff --git a/src/kitaab-public/raw/201013-2207.wiki b/src/kitaab-public/raw/201013-2207.wiki new file mode 100644 index 0000000..6ca861c --- /dev/null +++ b/src/kitaab-public/raw/201013-2207.wiki @@ -0,0 +1,16 @@ +%title Idea behind Puralek +:puralek:writing: +%date 2020-10-13 22:07 + +i realized that this is about organizing information, but thats also literally the purpose of the data involved in creating kitaab. its important to remember to distinguish between the mix of meta data and data held in this "book" and all the data that is produced in using computers. however the organization principles apply to both. hence i am starting to use this more like a log of all things. in doing so, the idea of Puralek and Kitaab become inextriabcly intertwined and must be synthesized into something more + +this struck me during the reordering of /now and seeing now listed down there as an intergration idea makes sense, but not the scope i originally thought. + +use /now to order the index page of Kitaab +some sort of averaging between total itetms and change in items + += Integration ideas = +generate a calendar that updates over nextcloud through task warrior events +Be able to link the Tasks list from a specific directory into the /now page +automation based on the above tags idea: feedreader > star > based on content action (add to jackett for music, save to images for image, etc) and have a living orgamism of information + diff --git a/src/kitaab-public/raw/201015-2153.wiki b/src/kitaab-public/raw/201015-2153.wiki new file mode 100644 index 0000000..1c5891a --- /dev/null +++ b/src/kitaab-public/raw/201015-2153.wiki @@ -0,0 +1,7 @@ +%title Vim Kendrit Review +:kendrit:vim:review: +%date 2020-10-15 21:53 + +So today marks the end of my vim kendrit. As always I'm wishing I did better at it, but I have a habit of setting aspirational goals. I like the two week format, given that this was the first one I did. While I didn't exclusively focus on Vim stuff, that was'nt my intention, and just having this kendrit set gave me a direction to turn to when I was not sure about what to focus on. I liked that. I also feel like I am at least a bit better at vim now. I made a contribution to vimwiki-sync to ensure that it runs on NeoVim too, and that's something! I've never had an PR be included before 😊 It felt really good to have *finally* contributed to an open source project and have it accepted. I also picked up on a few things that I'd be meaning to learn for a while, but I'm not yet fluent at them. I think if there's something I should improve on for Kendrit's it's writing stuff down more. That was a big help, but also I had to go through the source material a few times before I realized I really needed to write things down. + +I hadn't thought of this before, but this does impact my ability to do [[dev]] [[hack]] [[generative]] stuff. Though I suppose to be fair I hadn't really been doing that for a while now. Perhaps I could find a way to incorporate that into my Kendrits. diff --git a/src/kitaab-public/raw/201015-2222.wiki b/src/kitaab-public/raw/201015-2222.wiki new file mode 100644 index 0000000..9fe9c42 --- /dev/null +++ b/src/kitaab-public/raw/201015-2222.wiki @@ -0,0 +1,32 @@ +%title kendrit-puralek +:kendrit:puralek: +%date 2020-10-15 22:22 + +[[201101-2014|Kendrit Puralek Review]] + += Goals = +- HPI interface + - Automation to grab stuff from various services and have it be accessible ideally through commandline + - Ability to add to [[Kitaab]] through [[Puralek]] +- Borg backup running continously +- Ensure that grasp is running through nixOS + - Create a new zettel for each grasp quote + - Put all of [[quotes]], [[webnotes]], and [[webquotes]] into one file +- [[bowl]] running on nixOS with all HDDs attached *OR* a replacement for bowl +- Integrate all the old stuff that is in cold storage and make it accessible +- Integrate stuff that is currently android only into Puralek + - Habits +- Taskwarrior + Calendar integration +- build a startpage that features random things from Puralek + - album + - article + - kitaab page + - rss feed? + - quote + - story? +- [[lifeTracker]] integration + - finances + - location + - browser history + - sleep + - media consumption diff --git a/src/kitaab-public/raw/201015-2229.wiki b/src/kitaab-public/raw/201015-2229.wiki new file mode 100644 index 0000000..c70574b --- /dev/null +++ b/src/kitaab-public/raw/201015-2229.wiki @@ -0,0 +1,32 @@ +%title Services +:ops:software: +%date 2020-10-15 22:29 + += Digital Infrastructure = +- nextcloud ([[bowl]]) + - files + - calendar + - photos +- airsonic ([[bowl]]) +- wallabag ([[bowl]]) +- taskwarrior ([[bowl]]) +- gitea ([[cube]]) + - passwords +- blog ([[cube]]) +- rss reader (feedbin.com) +- Mastodon (hackers.town / merveilles.town) +- Scuttlebutt ([[line]] / [[curve]] / [[box]]) +- Habits ([[line]]) +- Fava + Beancount ([[finances]]) +- Syncthing + - this notebook + - tiddlyWiki + - drawing +- Telegram, Wire, Whatsapp, Signal, Matrix +- Slack / Discord +- [[AlgoVPN]] / wireguard +- OSMAnd + += Less used = +- Anki +- Duolingo diff --git a/src/kitaab-public/raw/201015-2239.wiki b/src/kitaab-public/raw/201015-2239.wiki new file mode 100644 index 0000000..8337fd9 --- /dev/null +++ b/src/kitaab-public/raw/201015-2239.wiki @@ -0,0 +1,31 @@ +%title Archive pirate data +:▔▕▛▐▛▖▗▐:pirate: +%date 2020-10-15 22:39 + += Status = +- Jackett hooked up to redacted +- Lidarr doesnt seems to connect to transmission on [[tri]] +- Lidarr does connect to Jackett on [[bowl]] +- Lidarr does not need a local list if q0x3f@geryon.feralhosting.com:~/scripts/music-pull works well +- sshfs configured to tv-seed and music-seed, needs to be initialized on boot/permanent?? +- not sure how the lidarr/▘▙▔▚▖▗▜▟ import into kodi/airsonic works +- ▒▞▕▞▒▓ not working + += Notes = +- need to configure ▖▗▓▜▓▚▛, bowl tv mnt points to share to kodi +- need to find a way smarter way to grab files, eventually i'll need to clear music-seed without redownloading all of it. perhaps store the list of already grabbed folders and diff with remote +- notification for beet failures, with beet running in a tmux screen +- configure cron for startup on these services (currently sitting tmux screen 1) +- mono installed + += even older = +- Sonarr/Lidarr/Jackett installed +- Jackett + Sonarr configured +- Jackett + Lidar waiting +- Transmission + Sonarr configured +- Transmission + Lidarr waiting +- Sonarr - http://185.21.216.149:28785/ +- Cardigann - http://192.168.1.6:5060/ +- Lidarr - http://192.168.1.6:8686/ (supports gazelle api??) + +Seems Lidarr and Radarr both require me to point them at my current collection and have the downloader be remote. this isn't such a big problem as I can just install them on my laptop, and run them over localhost, no proxy necessary. i can keep jackett installed remotely and use that as the converter. this should hopefully make it easier to keep my libraries intact as well. diff --git a/src/kitaab-public/raw/201015-2306a.wiki b/src/kitaab-public/raw/201015-2306a.wiki new file mode 100644 index 0000000..9ec9bd8 --- /dev/null +++ b/src/kitaab-public/raw/201015-2306a.wiki @@ -0,0 +1,16 @@ +%title Travel +:travel: +%date 2020-10-15 23:06 + +Adventures in exploration +- [[india-2018]] +- [[america-2018]] +- [[sydney-april-2019]] +- [[smashstock2019]] +- [[korea2019]] +- [[newzealand2019]] +- [[brooyar2020]] +- [[canberra2020]] +- [[sydney2021]] +- [[brooyar2021]] +- [[newzealand2021]] diff --git a/src/kitaab-public/raw/201015-2313.wiki b/src/kitaab-public/raw/201015-2313.wiki new file mode 100644 index 0000000..feca470 --- /dev/null +++ b/src/kitaab-public/raw/201015-2313.wiki @@ -0,0 +1,11 @@ +%title Invincible Computing +:writing:punya: +%date 2020-10-15 23:13 + +Computers are fragile things. Data is lost, for either hardware or software reasons. Software goes out of date, hardware becomes obsolete. +Why do we put up with this? +I want to be able to point any computer that I rightfully have ownership of, point it to a server of mine, and be jacked right back into my setup. + +As a developer and enthusiast I refuse to have to configure my tools over and over again. I learn them deeply and set them up to be exactly how I want. +But I should only go through that process once. And just like the hammer of Thor, I should be able to summon them from anywhere. +That is the goal. diff --git a/src/kitaab-public/raw/201017-1546.wiki b/src/kitaab-public/raw/201017-1546.wiki new file mode 100644 index 0000000..35faae1 --- /dev/null +++ b/src/kitaab-public/raw/201017-1546.wiki @@ -0,0 +1,5 @@ +%title Taskwarrior Android Changes +:dev:PR:idea:android: +%date 2020-10-17 15:46 + +Instead of reports showing various different taskwarrior reports, have it show by project and be configurable diff --git a/src/kitaab-public/raw/201018-2128.wiki b/src/kitaab-public/raw/201018-2128.wiki new file mode 100644 index 0000000..1b0f5b0 --- /dev/null +++ b/src/kitaab-public/raw/201018-2128.wiki @@ -0,0 +1,18 @@ +%title voiceNote +:dev:pebble: +%date 2020-10-18 21:28 + +A VoiceNote application that creates a new text note with the title and rest of the dictation to your phone as a txt file saved wherever you want it, optionally through some template. + +This is going to need: +- Transcription API calls +- Sending data to phone +- Handling the data once on the phone (companion app?) + +Some useful links: +- Rebble SDK examples https://developer.rebble.io/developer.pebble.com/examples/index.html +- TranscriptionAPI Docs https://developer.rebble.io/developer.pebble.com/guides/events-and-services/dictation/index.html +- Apps: + - https://apps.rebble.io/en_US/application/562eb6ebd2c136c34a00000b?section=watchapps + - https://apps.rebble.io/en_US/application/56231c63ade802b29d00002b?section=watchapps + - https://apps.rebble.io/en_US/application/5546dbbdab49e49cb40000ef?section=watchapps diff --git a/src/kitaab-public/raw/201018-2141.wiki b/src/kitaab-public/raw/201018-2141.wiki new file mode 100644 index 0000000..0012074 --- /dev/null +++ b/src/kitaab-public/raw/201018-2141.wiki @@ -0,0 +1,7 @@ +%title Replacement Glass +:pebble:dot: +%date 2020-10-18 21:41 + +Need a 35.5mm width and 0.5mm thickness sapphire glass replacement. +Will probably need 1mm take to secure it back to the I-ring +Alternatively Suguru could work diff --git a/src/kitaab-public/raw/201018-2147.wiki b/src/kitaab-public/raw/201018-2147.wiki new file mode 100644 index 0000000..7367226 --- /dev/null +++ b/src/kitaab-public/raw/201018-2147.wiki @@ -0,0 +1,13 @@ +%title The God Pebble +:pebble:craft:dot: +%date 2020-10-18 21:47 + +Endgame: +- waterproof + - Suguru sealed + - O-capped buttons (not sure if possible) +- Sapphire glass (polarized?) +- HR Smart Strop +- Higher battery capacity +- NFC Payments +- Take calls through the microphone diff --git a/src/kitaab-public/raw/201018-2232.wiki b/src/kitaab-public/raw/201018-2232.wiki new file mode 100644 index 0000000..684e8df --- /dev/null +++ b/src/kitaab-public/raw/201018-2232.wiki @@ -0,0 +1,10 @@ +%title Linux Debugging +:ops:cli: +%date 2020-10-18 22:32 + += Posix = +- /etc/ stores a list of config files for the software you have installed +- We can determine most log file locations, from config files + += Systemd = +- /etc/systemd/system shows you all the system services running diff --git a/src/kitaab-public/raw/201018-2304.wiki b/src/kitaab-public/raw/201018-2304.wiki new file mode 100644 index 0000000..5cf3107 --- /dev/null +++ b/src/kitaab-public/raw/201018-2304.wiki @@ -0,0 +1,7 @@ +%title Memory Usage on cube +:ops:cube: +%date 2020-10-18 23:04 + +When I logged in, checking htop didn't reveal that gitea was running out of memory. it was sitting around 250mb of usage, well within what is available. + +Restarting gitea, disabling hypercore and dat because they're broken and old has resolved the current problem diff --git a/src/kitaab-public/raw/201019-1905.wiki b/src/kitaab-public/raw/201019-1905.wiki new file mode 100644 index 0000000..942917d --- /dev/null +++ b/src/kitaab-public/raw/201019-1905.wiki @@ -0,0 +1,47 @@ +%title NixOS Quick Tips +:nix:dev:ops: +%date 2020-10-19 19:05 + +install a package: +`nix-env -i hello` <-- not reproducible and hence not advisable + or +edit `/etc/nixos/configuration.nix` to ensure system wide install +`nixos-rebuild switch` <-- create new generation +`nixos-rebuild test` <-- only active while computer on + +`sudo nixos-rebuild test -I nixpkgs=~/usr/nixpkgs/` + ^-- use local repo to build pkgs + +find out where in the store a binary is: +`readlink -f $(which hello)` + +search packages +`nix-env -qaP '.*hello.*'` + or +`nix search ` + +search nix package options +`nixos-option